def METHOD_NAME(n: int) -> list[list[Fraction]]:
    """Return the first n Legendre polynomials.
    The polynomials have *standard* normalization, i.e.
    int_{-1}^1 dx L_n(x) L_m(x) = delta(m, n) * 2 / (2 * n + 1).
    The return value is a list of list of fraction.Fraction instances.
    """
    result = [[Fraction(1)], [Fraction(0), Fraction(1)]]
    if n <= 2:
        return result[:n]
    for i in range(2, n):
        # Use Bonnet's recursion formula.
        new = (i + 1) * [Fraction(0)]
        new[1:] = (r * (2 * i - 1) for r in result[-1])
        new[:-2] = (n - r * (i - 1) for n, r in zip(new[:-2], result[-2]))
        new[:] = (n / i for n in new)
        result.append(new)
    return result