code: def split_history(args, param_history):
      """
      Divide trials into good ones (below) and bad ones (above).
      """
      n_below = math.ceil(args.gamma * math.sqrt(len(param_history)))
      n_below = min(n_below, args.linear_forgetting)
      order = sorted(
          range(len(param_history)),
          key=(lambda i: param_history[i].loss),
      )  # argsort by loss
      below = [param_history[i].param for i in order[:n_below]]
      above = [param_history[i].param for i in order[n_below:]]
      return np.asarray(below), np.asarray(above)
  
imports: from __future__ import annotations
  from collections import defaultdict
  import logging
  import math
  from typing import Any, NamedTuple
  import numpy
  from scipy.special import erf
  from typing_extensions import Literal
  import nni
  from nni.common.hpo_utils import Deduplicator, OptimizeMode, format_search_space, deformat_parameters, format_parameters
  from nni.tuner import Tuner
  from nni.utils import extract_scalar_reward
  from .None import random_tuner
label_desc: Use image node_id 6 for calling a global function with example usage: split_history(args, param_history) and returns: np,  np