def boundOnFinalRegret(T_RH, T_SH, T_TR, nbPlayers, nbArms):
    """ Use the upper-bound on regret when :math:`T_{RH}`, :math:`T_{SH}` and :math:`T_{TR}` and :math:`M` are known.

    - The "constant" regret of course grows linearly with :math:`T_{RH}`, :math:`T_{SH}` and :math:`T_{TR}`, as:

        .. math:: \\forall T \\geq T_{RH} + T_{SH} + T_{TR}, \\;\\; R_T \\leq M (T_{RH} + (1 - \\frac{M}{K}) T_{SH} + T_{TR}).

    .. warning:: this bound is not a deterministic result, it is only value with a certain probability (at least :math:`1 - \\delta`, if :math:`T_{RH}`, :math:`T_{SH}` and :math:`T_{TR}` is chosen as given by :func:`special_times`).


    - Cf. Theorem 1 of [Kumar et al., 2018](XXX).
    - Examples:

    >>> boundOnFinalRegret(197, 26949, -280, 2, 8)  # doctest: +ELLIPSIS
    40257.5
    >>> boundOnFinalRegret(279, 34468, 616, 2, 8)   # doctest: +ELLIPSIS
    53492.0
    >>> boundOnFinalRegret(362, 41987, 1512, 2, 8)  # doctest: +ELLIPSIS
    66728.5

        + For :math:`M=5`:

    >>> boundOnFinalRegret(197, 26949, -280, 5, 8)  # doctest: +ELLIPSIS
    50114.375
    >>> boundOnFinalRegret(279, 34468, 616, 5, 8)   # doctest: +ELLIPSIS
    69102.5
    >>> boundOnFinalRegret(362, 41987, 1512, 5, 8)  # doctest: +ELLIPSIS
    88095.625

        + For :math:`M=K=8`:

    >>> boundOnFinalRegret(197, 26949, -280, 8, 8)  # doctest: +ELLIPSIS
    -664.0  # there is something wrong with T_TR !
    >>> boundOnFinalRegret(279, 34468, 616, 8, 8)   # doctest: +ELLIPSIS
    7160.0
    >>> boundOnFinalRegret(362, 41987, 1512, 8, 8)  # doctest: +ELLIPSIS
    14992.0
    """
    return nbPlayers * (T_RH + T_SH * (1.0 - float(nbPlayers) / nbArms) + T_TR)
