Pointers assignment question

Q­7 In the piece of code, arr[ ][ ] is a 2­D array and assume that the
contents of the 2­D array are already filled up. What is stored in the
variable sum at the end of the code segment?
int arr[3][3];
int i, sum=0; i = 0; while(i<3) {
sum += * ( * (arr+i)+(i++)); }
printf(“sum:%d”, sum);
A) Sum of all elements in the matrix
B) Sum of alternate elements in the matrix
C) Sum of the elements along the principal diagonal
D) None

how is c the answer

(arr+i) takes me to ith row. *(arr+i) is ith row 0th column. i++ selects the ith column and increments i(as postfix operator is used, it uses old value and then updates the value). Therefore, it picks (0,0)+(1,1)+(2,2) i.e. sum of principal diagonal. So answer is ©.

bhai agar thoda orr elaborate kar skate ho??
*(arr+i) is ith row 0th column. i++ selects the ith column and increments i(as postfix operator is used, it uses old value and then updates the value).

((arr+1)+2) ~ arr[1][2]
((arr+0)+1) ~ arr[0][1]
((arr+2)+0) ~ arr[2][0]

So only ((arr+0)+0), ((arr+1)+1) and ((arr+2)+2) will be added which are on principal diagonal.