#include <iostream>
using namespace std;
template <bool T, bool U, int V>
struct doFizBuzz
{
doFizBuzz() {}
};
template <int V>
struct doFizBuzz<false, false, V>
{
doFizBuzz()
{
std::cout<<V;
}
};
template <int V>
struct doFizBuzz<true, false, V>
{
doFizBuzz()
{
std::cout<<"Fizz";
}
};
template <int V>
struct doFizBuzz<false, true, V>
{
doFizBuzz()
{
std::cout<<"Buzz";
}
};
template <int V>
struct doFizBuzz<true, true, V>
{
doFizBuzz()
{
std::cout<<"FizzBuzz";
}
};
template<int T>
struct fizbuzz: fizbuzz<T - 1>
{
constexpr static bool fizz = ((T % 3) == 0);
constexpr static bool buzz = ((T % 5) == 0);
using F = doFizBuzz<fizz, buzz, T>;
fizbuzz() { F(); std::cout<<std::endl; }
};
template<>
struct fizbuzz<0>
{
fizbuzz() {}
};
int main() {
// your code goes here
fizbuzz<100> f;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGJvb2wgVCwgYm9vbCBVLCBpbnQgVj4Kc3RydWN0IGRvRml6QnV6egp7Cglkb0ZpekJ1enooKSB7fQp9OwoKdGVtcGxhdGUgPGludCBWPgpzdHJ1Y3QgZG9GaXpCdXp6PGZhbHNlLCBmYWxzZSwgVj4KewoJZG9GaXpCdXp6KCkKCXsKCQlzdGQ6OmNvdXQ8PFY7Cgl9Cn07Cgp0ZW1wbGF0ZSA8aW50IFY+CnN0cnVjdCBkb0ZpekJ1eno8dHJ1ZSwgZmFsc2UsIFY+CnsKCWRvRml6QnV6eigpCgl7CgkJc3RkOjpjb3V0PDwiRml6eiI7Cgl9Cn07Cgp0ZW1wbGF0ZSA8aW50IFY+CnN0cnVjdCBkb0ZpekJ1eno8ZmFsc2UsIHRydWUsIFY+CnsKCWRvRml6QnV6eigpCgl7CgkJc3RkOjpjb3V0PDwiQnV6eiI7Cgl9Cn07Cgp0ZW1wbGF0ZSA8aW50IFY+CnN0cnVjdCBkb0ZpekJ1eno8dHJ1ZSwgdHJ1ZSwgVj4KewoJZG9GaXpCdXp6KCkKCXsKCQlzdGQ6OmNvdXQ8PCJGaXp6QnV6eiI7Cgl9Cn07Cgp0ZW1wbGF0ZTxpbnQgVD4Kc3RydWN0IGZpemJ1eno6IGZpemJ1eno8VCAtIDE+CnsKCWNvbnN0ZXhwciBzdGF0aWMgYm9vbCBmaXp6ID0gKChUICUgMykgPT0gMCk7Cgljb25zdGV4cHIgc3RhdGljIGJvb2wgYnV6eiA9ICgoVCAlIDUpID09IDApOwoJCgl1c2luZyBGID0gZG9GaXpCdXp6PGZpenosIGJ1enosIFQ+OwoJCglmaXpidXp6KCkgeyBGKCk7IHN0ZDo6Y291dDw8c3RkOjplbmRsOyB9Cn07Cgp0ZW1wbGF0ZTw+CnN0cnVjdCBmaXpidXp6PDA+CnsJCglmaXpidXp6KCkge30KfTsKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCglmaXpidXp6PDEwMD4gZjsKCQoJcmV0dXJuIDA7Cn0=