input: Write a function to generate all possible combinations of a list of symbols and print them.
  assert generate_combinations(['A', 'B', 'C']) == [[], ['C'], ['B'], ['B', 'C'], ['A'], ['A', 'C'], ['A', 'B'], ['A', 'B', 'C']]
  assert generate_combinations(['X', 'Y']) == [[], ['Y'], ['X'], ['X', 'Y']]
  assert generate_combinations([]) == [[]]
output: def generate_combinations(symbols):
      result = []
      def backtrack(start, path):
          result.append(path[:])
          for i in range(start, len(symbols)):
              path.append(symbols[i])
              backtrack(i + 1, path)
              path.pop()
      
      backtrack(0, [])
      return result