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,