My solution takes the input string and feeds it through a binary decoder but with a funny position value order, the fist atom that gets read is worth 4 quicksilver, the second 2, the third 1 and this determines the first metal, the last two atoms are worth 1 and 2 quicksilver respectivly and makes the second metal. now if the first 3 atoms have combined value of 6 or 7, i subtract 2 and swap the order of the metals outputted. the subtraction is implemented by always trying to not project with the next 2 quicksilver if the first atom is fire. and then having a sucessful subtraction works as a check that the second atom was fire. this effectivly checks if the first 3 atoms have a value of 6 or higher. then there is just som conditional bonding to swap the atom order. this results in a valid encoding with the only missing metal combinations being Silv-Silv, Silv-Gold, Gold-Silv, and Gold-Gold i had a few ideas about what encoding i would use, with my first one being to try and implement a base 6 doubble dabble algorithm, but after brainstorming a bit i settled on this: If Overflow then sub2 and Swap approach instead. this puzzle was made slightly more dificult for me by the fact that i didn't want to try to get into modding OM, so i just used the provided stabilized salt and some easily modifiable instructions to build the different input cases and test my solution that way. thank you for a very fun puzzle, and if you want an idea for a similar puzzle for another time, let the input be a 3 long string of metals and the output a 8 long string of salt and fire.