import java.util.AbstractMap.SimpleEntry;
import java.util.Map.Entry;

class FizzBuzzQuiz {
	private static ThreadLocal local = new ThreadLocal();
	
	private static Object fizzBuzz(Object x, Integer n, String msg) {
		if (x instanceof Integer) {
			local.set(new SimpleEntry((Integer)x, ""));
		}
		Entry<Integer,String> state = (Entry)local.get();
		if (state.getKey() % n == 0) {
			state.setValue(state.getValue() + msg);
		}
		if (state.getValue() == "") {
			return state.getKey();
		} else {
			return state.getValue();
		}
	}
	
	public static Object fizz(Object x) { return fizzBuzz(x, 3, "Fizz"); }
	public static Object buzz(Object x) { return fizzBuzz(x, 5, "Buzz"); }
	public static Object gizz(Object x) { return fizzBuzz(x, 7, "Gizz"); }
	
	public static void main (String[] args) {
		System.out.println( gizz(buzz(fizz(1))) );
		System.out.println( gizz(buzz(fizz(3))) );
		System.out.println( gizz(buzz(fizz(5))) );
		System.out.println( gizz(buzz(fizz(15))) );
		System.out.println( gizz(buzz(fizz(7))) );
		System.out.println( gizz(buzz(fizz(21))) );
		System.out.println( gizz(buzz(fizz(35))) );
		System.out.println( gizz(buzz(fizz(105))) );
		System.out.println( buzz(gizz(fizz(105))) );
		System.out.println( gizz(buzz(fizz(999))) );
		
		System.out.println( (int)buzz(fizz(1)) + 2 );
		System.out.println( fizz((int)buzz(fizz(1)) + 2) );
		System.out.println( (String)buzz(fizz(15)) + "XXX" );
		
	}
}