input: Write a function to generate Fibonacci numbers up to a given number `n`. The function should return a list containing all Fibonacci numbers less than or equal to `n`. If `n` is 0, the function should return [0]. If `n` is 1, the function should return [0, 1].
  assert Fibonacci(0)==[0]
  assert Fibonacci(1)==[0, 1]
  assert Fibonacci(10)==[0, 1, 1, 2, 3, 5, 8]
  assert Fibonacci(20)==[0, 1, 1, 2, 3, 5, 8, 13]
  assert Fibonacci(30)==[0, 1, 1, 2, 3, 5, 8, 13, 21]
output: def Fibonacci(n):
      if n == 0:
          return [0]
      elif n == 1:
          return [0, 1]
      fib_list = [0, 1]
      while True:
          next_fib = fib_list[-1] + fib_list[-2]
          if next_fib > n:
              break
          fib_list.append(next_fib)
      return fib_list