def intercalate_sigma_into_peak_params(reduced_peak_params, sigmas):
    """
    Insert the sigmas back into reduced_peak_params to form peak_params.

    To describe N peaks,
    Input
    -----
    reduced_peak_params : A vector of length = 2*N.
                        Every odd element describe an amplitude,
                        every even element describes the centroid of a peak.
    sigmas : A vector of length = N.
            Each element describes the sigma of a single peak.

    Returns
    -------
    peak_params : A vector of length 3*N.
        element 0, 3, 6, 9... describes the amplitude of peak 1, 2, 3, 4...
        element 1, 4, 7, 10... describes the amplitude of peak 1, 2, 3, 4...
        element 2, 5, 8, 11... describes the amplitude of peak 1, 2, 3, 4...    
    """
    assert len(reduced_peak_params)//2==len(sigmas), f"Expected to have Number of peaks = len(sigmas) = {len(sigmas)}. "
    assert len(reduced_peak_params)%2==0, "Exactly two arguments must be provided to describe each peak: amplitude and centroid."
    peak_params = []

    for amplitude, centroid, sigma in zip(reduced_peak_params[::2], reduced_peak_params[1::2], sigmas):
        peak_params.append(amplitude)
        peak_params.append(centroid)
        peak_params.append(sigma)
    return peak_params