#include <stdio.h>
#define FBGNEST_MAX 32
#define p(in) {\
char *list[FBGNEST_MAX];\
int cnt = 0;\
int n;\
fbg st;\
int i;\
\
fbg fbgfunc(int m,char *str){\
if(n%m==0)list[cnt++]=str;\
return st;\
}\
fbg new(int b){n=b;return st;}\
\
/* 追加箇所1 */\
fbg fizz(){return fbgfunc(3,"Fizz");}\
fbg buzz(){return fbgfunc(5,"Buzz");}\
fbg gizz(){return fbgfunc(7,"Gizz");}\
\
/* 追加箇所2 */\
st.fizz = fizz;\
st.buzz = buzz;\
st.gizz = gizz;\
\
for(i=0;i<FBGNEST_MAX;i++)list[i]=NULL;\
in;\
\
if(cnt==0){\
printf("%d\n",n);\
}else{\
for(i=0;i<cnt;i++){\
printf(list[i]);\
}\
printf("\n");\
}\
}
typedef struct fbg_ {
/* 追加箇所3 */
struct fbg_ (*fizz)();
struct fbg_ (*buzz)();
struct fbg_ (*gizz)();
} fbg;
;
int main(){
p( new( 1).fizz().buzz() );
p( new( 3).fizz().buzz() );
p( new( 5).fizz().buzz() );
p( new( 15).fizz().buzz() );
p( new( 7).fizz().buzz().gizz() );
p( new( 21).fizz().buzz().gizz() );
p( new( 35).fizz().buzz().gizz() );
p( new(105).fizz().buzz().gizz() );
p( new(105).fizz().gizz().buzz() );
return 0;
}