import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
	public static void main(final String[] args) {
        List<String> names = Arrays.asList("Superman", "Batman", "Wonder Woman");
        List<String> likes = Arrays.asList("good1", "good2", "good3");
        List<String> dislikes = Arrays.asList("bad1", "bad2", "bad3");
        final List<String> statements = names.stream().flatMap(
                r -> likes.stream().flatMap(s -> dislikes.stream().map(t -> r + " likes " + s + " and dislikes " + t)))
                .collect(Collectors.toList());
        statements.forEach(System.out::println);
    }
}