input: from typing import List
  
  def find_three_largest_numbers(numbers: List[int]) -> List[int]:
      """Given a list of integers, find and return the three largest numbers in the list.
      If the list has fewer than three numbers, return all of them. If the list contains duplicate
      numbers, they should be considered as distinct for this task.
  
      >>> find_three_largest_numbers([10, 4, 1, 4, -8, 3])
      [10, 4, 4]
      >>> find_three_largest_numbers([7, 7, 7, 7])
      [7, 7, 7]
      >>> find_three_largest_numbers([1, 2])
      [1, 2]
      """
output:     if len(numbers) < 3:
          return sorted(numbers, reverse=True)
      
      largest = [float('-inf')] * 3
      
      for num in numbers:
          if num > largest[0]:
              largest[2] = largest[1]
              largest[1] = largest[0]
              largest[0] = num
          elif num > largest[1]:
              largest[2] = largest[1]
              largest[1] = num
          elif num > largest[2]:
              largest[2] = num
      
      return largest