corrupted (wrong c): rejected=True ['odd permutation']
corrupted (wrong x / duplicate source): rejected=True ['type mismatch (3, 1, 1, 1) vs (3, 3)']
corrupted (duplicate pair (non-bijective)): rejected=True ['type mismatch (3, 1, 1, 1) vs (3, 3)']
corrupted (non-permutation): rejected=True ['not a permutation']
corrupted (missing class): rejected=True ['sources/targets are not all classes exactly once']
uncorrupted line accepted: True
corrupted (whole pair duplicated incl. labels, non-bijective): rejected=True ['sources/targets are not all classes exactly once']
corrupted (stated targets of two pairs swapped): rejected=True ['type mismatch (6, 6) vs (5, 4, 2, 1)']
corrupted (c times a 3-cycle in one pair): rejected=True ['type mismatch (8, 4) vs (7, 5)']
