input: Write a function to generate Fibonacci numbers up to a given number \( n \). The function should return a list of Fibonacci numbers starting from 0 up to but not exceeding \( n \). If \( n \) is less than 0, return an empty list. If \( n \) is 0, return a list containing only 0.
  
  
  def Fibonacci(n):
      if n < 0:
          return []
      elif n == 0:
          return [0]
      elif n == 1:
          return [0, 1]
      else:
          fib_sequence = [0, 1]
          while True:
              next_value = fib_sequence[-1] + fib_sequence[-2]
              if next_value > n:
                  break
              fib_sequence.append(next_value)
          return fib_sequence
  
  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(-5) == []
  
output: 
  def Fibonacci(n):
      if n < 0:
          return []
      elif n == 0:
          return [0]
      elif n == 1:
          return [0, 1]
      else:
          fib_sequence = [0, 1]
          while True:
              next_value = fib_sequence[-1] + fib_sequence[-2]
              if next_value > n:
                  break
              fib_sequence.append(next_value)
          return fib_sequence
  