input: Write a function to generate and print all combinations of three lists.
  assert generate_combinations([1,2,3], [4,5,6], [7,8,9])==[(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 6, 7), (1, 6, 8), (1, 6, 9), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 6, 7), (2, 6, 8), (2, 6, 9), (3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 6, 7), (3, 6, 8), (3, 6, 9)]
  assert generate_combinations(['a','b'], [1,2], [True, False])==[('a', 1, True), ('a', 1, False), ('a', 2, True), ('a', 2, False), ('b', 1, True), ('b', 1, False), ('b', 2, True), ('b', 2, False)]
  assert generate_combinations([10], [20], [30])==[(10, 20, 30)]
output: def generate_combinations(list1, list2, list3):
      from itertools import product
      return list(product(list1, list2, list3))