Generates and returns an array of `num_unique_values` HEX colours.
    :param num_unique_values: int, number of colours to be generated.
    :return: array of str, containing colours in HEX format.

def get_enough_colours(num_unique_values):
    """
    Generates and returns an array of `num_unique_values` HEX colours.
    :param num_unique_values: int, number of colours to be generated.
    :return: array of str, containing colours in HEX format.
    """
    if num_unique_values in NUM2COLOURS:
        return NUM2COLOURS[num_unique_values]
    vs = ['#%02x%02x%02x' % tuple(rgb) for rgb in
          (map(lambda x: int(x * 255), colorsys.hsv_to_rgb(*hsv)) for hsv in
           ((_ / num_unique_values, 0.25 * (1 + (_ % 3)), .8) for _ in range(1, num_unique_values + 1)))]
    if num_unique_values < 20:
        return vs[::5] + vs[1::5] + vs[2::5] + vs[3::5] + vs[4::5]
    return vs[::10] + vs[1::10] + vs[2::10] + vs[3::10] + vs[4::10] \
           + vs[5::10] + vs[6::10] + vs[7::10] + vs[8::10] + vs[9::10]