input: Write a function to remove duplicates from a list. The function should return a new list with all duplicates removed while maintaining the original order of elements.
  
  assert remove_duplicates([1, 2, 3, 4, 3, 2, 1]) == [1, 2, 3, 4]
  assert remove_duplicates([5, 5, 5, 5, 5]) == [5]
  assert remove_duplicates([]) == []
  assert remove_duplicates([1, 2, 2, 3, 4, 4, 5]) == [1, 2, 3, 4, 5]
  assert remove_duplicates([10, 20, 30, 40, 10]) == [10, 20, 30, 40]
output: def remove_duplicates(lst):
      seen = set()
      result = []
      for item in lst:
          if item not in seen:
              seen.add(item)
              result.append(item)
      return result