their values: ``` [2] [1] [3] → [4] [2] ``` Now let's label the same transaction with the ordinal numbers of the satoshis that each input contains, and question marks for each output slot. Ordinal numbers are large, so let's use letters to represent them: ``` [a b] [c] [d e f] → [? ? ? ?] [? ?] ``` To figure out which satoshi goes to which output, go through the input satoshis in order and assign each to a question mark: ``` [a b] [c] [d e f] → [a b c d] [e f] ``` What about fees, you might ask? Good question! Let's imagine the same transaction, this time with a two satoshi fee. Transactions with fees send more satoshis in the inputs than are received by the outputs, so to make our transaction into one that pays fees, we'll remove the second output: ``` [2] [1] [3] → [4] ``` The satoshis e and f now have nowhere to go in the outputs: ``` [a b] [c] [d e f] → [a b c d] ``` So they go to the miner who mined the block as fees. [The BIP](https://github.com/ordinals/ord/blob/master/bip.mediawiki) has the details,