Join on key. Tables are pre‑sorted. Pointers move forward only; when duplicates occur, we walk one side until the key changes.