input: Write a Python function to generate a classification tree from a given dataset.
  assert generate_classification_tree(pd.DataFrame({'X1': [0, 1, 1, 0], 'X2': [0, 1, 0, 1], 'X3': [0, 1, 0, 1], 'Y': [0, 1, 0, 1]})) == ['X1 - 0', 'X2 - 1', 'X3 - 1']
  assert generate_classification_tree(pd.DataFrame({'A': [1, 1, 1, 1], 'B': [0, 0, 0, 0], 'C': [1, 1, 1, 1], 'Y': [0, 0, 0, 0]})) == ['A - 0', 'B - 0', 'C - 0']
output: def generate_classification_tree(df):
      features = df.columns[:-1]
      target = df.columns[-1]
      tree = []
      
      def build_tree(subset):
          if subset[target].nunique() == 1:
              return f"{features[0]} - {subset[target].iloc[0]}"
          
          best_feature = None
          best_feature_value = None
          
          for feature in features:
              unique_values = subset[feature].unique()
              for value in unique_values:
                  sub = subset[subset[feature] == value]
                  if sub[target].nunique() == 1:
                      best_feature = feature
                      best_feature_value = value
                      break
              if best_feature:
                  break
          
          if best_feature:
              tree.append(f"{best_feature} - {best_feature_value}")
              return build_tree(subset[subset[best_feature] == best_feature_value])
          else:
              return None
      
      build_tree(df)
      return tree