def METHOD_NAME(n, r, p):
    A = diff_conv_1d_fd(n, 1, 1)
    C = np.random.randn(p, n)
    Ar = np.random.randn(r, r) - r * np.eye(r)
    Cr = np.random.randn(p, r)
    Aop = NumpyMatrixOperator(A)
    Cop = NumpyMatrixOperator(C)
    Arop = NumpyMatrixOperator(Ar)
    Crop = NumpyMatrixOperator(Cr)
    Wva = solve_sylv_schur(Aop, Arop, C=Cop, Cr=Crop)
    W = Wva.to_numpy().T
    ATW = A.T.dot(W)
    WAr = W.dot(Ar)
    CTCr = C.T.dot(Cr)
    assert fro_norm(ATW + WAr + CTCr) / fro_norm(CTCr) < 1e-10