Discrete Adjoint Matching