Range Object vs Generator Object

def gen():
    for i in range(3):
        yield i

r = range(3)
g = gen()

print(list(r), list(r))
print(list(g), list(g))

What gets printed?

A

[0, 1, 2] [] then [0, 1, 2] [0, 1, 2]

B

[0, 1, 2] [0, 1, 2] then [0, 1, 2] []

C

[0, 1, 2] [0, 1, 2] then [0, 1, 2] [0, 1, 2]

D

[0, 1, 2] [] then [0, 1, 2] []