(*abc)
return [p0[i] for i in p1]
Given [a, b, c, ...] return the product of ...*c*b*a using array forms.
    The ith value is a[b[c[i]]].

    Examples
    ========

    >>> from sympy.combinatorics.permutations import _af_rmul, Permutation
    >>> Permutation.print_cyclic = False

    >>> a, b = [1, 0, 2], [0, 2, 1]
    >>> _af_rmul(a, b)
    [1, 2, 0]
    >>> [a[b[i]] for i in range(3)]
    [1, 2, 0]

    This handles the operands in reverse order compared to the ``*`` operator:

    >>> a = Permutation(a); b = Permutation(b)
    >>> list(a*b)
    [2, 0, 1]
    >>> [b(a(i)) for i in range(3)]
    [2, 0, 1]

    See Also
    ========
    rmul, _af_rmul
Given [a, b, c, ...] return the product of ...*c*b*a using array forms.
    The ith value is a[b[c[i]]].
Given [ a b c ... ] return the product of ... * c * b * a using array forms . The ith value is a [ b [ c [ i ]]] .
def _af_rmuln(*abc):
    """
    Given [a, b, c, ...] return the product of ...*c*b*a using array forms.
    The ith value is a[b[c[i]]].

    Examples
    ========

    >>> from sympy.combinatorics.permutations import _af_rmul, Permutation
    >>> Permutation.print_cyclic = False

    >>> a, b = [1, 0, 2], [0, 2, 1]
    >>> _af_rmul(a, b)
    [1, 2, 0]
    >>> [a[b[i]] for i in range(3)]
    [1, 2, 0]

    This handles the operands in reverse order compared to the ``*`` operator:

    >>> a = Permutation(a); b = Permutation(b)
    >>> list(a*b)
    [2, 0, 1]
    >>> [b(a(i)) for i in range(3)]
    [2, 0, 1]

    See Also
    ========
    rmul, _af_rmul
    """
    a = abc
    m = len(a)
    if m == 3:
        p0, p1, p2 = a
        return [p0[p1[i]] for i in p2]
    if m == 4:
        p0, p1, p2, p3 = a
        return [p0[p1[p2[i]]] for i in p3]
    if m == 5:
        p0, p1, p2, p3, p4 = a
        return [p0[p1[p2[p3[i]]]] for i in p4]
    if m == 6:
        p0, p1, p2, p3, p4, p5 = a
        return [p0[p1[p2[p3[p4[i]]]]] for i in p5]
    if m == 7:
        p0, p1, p2, p3, p4, p5, p6 = a
        return [p0[p1[p2[p3[p4[p5[i]]]]]] for i in p6]
    if m == 8:
        p0, p1, p2, p3, p4, p5, p6, p7 = a
        return [p0[p1[p2[p3[p4[p5[p6[i]]]]]]] for i in p7]
    if m == 1:
        return a[0][:]
    if m == 2:
        a, b = a
        return [a[i] for i in b]
    if m == 0:
        raise ValueError("String must not be empty")
    p0 = _af_rmuln(*a[:m//2])
    p1 = _af_rmuln(*a[m//2:])
    return [p0[i] for i in p1]
def _af_rmuln ( * abc ) : a = abc m = len ( a ) if m == 3 : p0 , p1 , p2 = a return [ p0 [ p1 [ i ] ] for i in p2 ] if m == 4 : p0 , p1 , p2 , p3 = a return [ p0 [ p1 [ p2 [ i ] ] ] for i in p3 ] if m == 5 : p0 , p1 , p2 , p3 , p4 = a return [ p0 [ p1 [ p2 [ p3 [ i ] ] ] ] for i in p4 ] if m == 6 : p0 , p1 , p2 , p3 , p4 , p5 = a return [ p0 [ p1 [ p2 [ p3 [ p4 [ i ] ] ] ] ] for i in p5 ] if m == 7 : p0 , p1 , p2 , p3 , p4 , p5 , p6 = a return [ p0 [ p1 [ p2 [ p3 [ p4 [ p5 [ i ] ] ] ] ] ] for i in p6 ] if m == 8 : p0 , p1 , p2 , p3 , p4 , p5 , p6 , p7 = a return [ p0 [ p1 [ p2 [ p3 [ p4 [ p5 [ p6 [ i ] ] ] ] ] ] ] for i in p7 ] if m == 1 : return a [ 0 ] [ : ] if m == 2 : a , b = a return [ a [ i ] for i in b ] if m == 0 : raise ValueError ( "String must not be empty" ) p0 = _af_rmuln ( * a [ : m // 2 ] ) p1 = _af_rmuln ( * a [ m // 2 : ] ) return [ p0 [ i ] for i in p1 ]