/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.stream.*;
import java.util.function.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		Stream<String> fizz = pattern(3, "Fizz");
		Stream<String> buzz = pattern(5, "Buzz");
		Stream<String> pattern = zip((a, b) -> a + b, fizz, buzz);
		Stream<String> fizzbuzz = zip((n, p) -> p.isEmpty() ? ""+n : p, nums().boxed(), pattern);
		fizzbuzz.limit(100).forEach(System.out::println);
	}
	
	static IntStream nums() {
		return IntStream.iterate(1, i -> i + 1);
	}
	static Stream<String> pattern(int n, String pattern) {
		return nums().mapToObj(i -> i % n == 0 ? pattern : "");
	}
	
	static <T, U, R> Stream<R> zip(BiFunction<T, U, R> zipper, Stream<T> ts, Stream<U> us) {
	    Iterator<T> tsItr = ts.iterator();
	    Iterator<U> usItr = us.iterator();
	    Iterator<R> iterator = new Iterator<R>() {
	        public boolean hasNext() {
	            return tsItr.hasNext() && usItr.hasNext();
	        }
	        public R next() {
	            return zipper.apply(tsItr.next(), usItr.next());
	        }
	    };
	
	    return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false);
	}
}