With the full set of conversion matrices, we iteratively create the product AC matrices ({P i }). Once an AC matrix is constructed, we check that the number of neighbours for each atom is less than or equal to its maximally allowed valence (C ≤ 4, H ≤ 1, O ≤ 3). If just one atom in the product has more neighbours than allowed, it is discarded. However, if the product AC matrix is valid, we use the program xyz2mol to convert the product AC matrix P i into an RDKit mapped molecular graph. To avoid duplicate products, we only save the products graphs with unique SMILES. Before we compare the SMILES, we ensure that we use the resonance form with least rotatable bonds.