Suppose that three different processes, P1, P2, and P3, share the variables x and y and execute the following code fragments concurrently, and that the initial value of y is 8. The instructions to add and subtract in memory are not atomic.

P1: P2: P3:
x = y; x = y; x = y;
x = x + 1; x = x - 1; x = x - 1;
y = x; y = x; y = x;

Which of the following values of y are possible after all three processes finish executing their code fragments?

a. 5
b. 6
c. 7
d. 8
e. 9
f. 10