Refcount Zero and Reused Addresses

This runs top to bottom under CPython 3.14:

class Foo:
    def __del__(self):
        print("Foo destroyed")

x = Foo()
print("before reassign")
x = None
print("after reassign")

a = [1, 2, 3]
first_id = id(a)
a = None
b = [4, 5, 6]
second_id = id(b)
print(first_id == second_id)

What does this print, in order?

A
Foo destroyed
before reassign
after reassign
True
B
before reassign
Foo destroyed
after reassign
True
C
before reassign
after reassign
Foo destroyed
True
D
before reassign
Foo destroyed
after reassign
False