Linking two fragments F together given a specified attachment point A F on each is a considerably easier problem, and is described in Algorithm 2. First, a fragment is chosen either based on the order of appearance (canonical) or randomly selected such that a batch contains a mixture of starting fragments (shuffle). Then, the first fragment SMILES undergoes the same procedure as a scaffold but given only one provided attachment point. The second fragment goes through the same procedure however, it is not reversed such that the attachment point is the first atom in the SMILES string. Following this, the CLM samples new tokens at each timestep x t provided there isn't already a prompt token f * t at that timestep t. Once SMILES generation has terminated due to the sampling of a stop token, the stop token is removed and the second fragment is simply concatenated to the generated SMILES string.