def METHOD_NAME(u1: Numpy2DFloatArray,
                u2: Numpy2DFloatArray,
                u3hat: Numpy2DFloatArray,
                s3hat: Numpy2DFloatArray):
    """
    Reconstructs the approximated solution.
    :param u1: Unitary array of the SVD of the first unfolded matrix.
    :param u2: Unitary array of the SVD of the second unfolded matrix.
    :param u3hat: Normalized unitary array produced by the HOSVD decomposition.
    :param s3hat: Normalized core tensor produced by the HOSVD decomposition
    :return: An :class:`ndarray` containing the reconstruction of the approximated solution.
    """
    b = np.kron(u1, u2)
    c = np.dot(s3hat, b.T)
    d = np.dot(u3hat[:, :], c)
    rows = u1.shape[0]
    columns = u2.shape[0]
    snapshot_number = u3hat.shape[0]
    reconstructed_solutions = np.zeros((rows, columns, snapshot_number))
    for i in range(snapshot_number):
        reconstructed_solutions[0:rows, 0:columns, i] = d[i, :].reshape((rows, columns))
    return reconstructed_solutions