Watch XOR-all fold an array into one accumulator (pairs cancel via x^x=0), then watch the two-singles split-by-a-set-bit route the two unique values into separate groups.
junior.md and professional.md for the proof that XOR-all returns the odd-count element, and that splitting on a bit of a^b separates two singles.