Arrays - Programming

Q1:

What will be the output of the program ?
#include<stdio.h>

int main()
{
    static int a[2][2] = {1, 2, 3, 4};
    int i, j;
    static int *p[] = {(int*)a, (int*)a+1, (int*)a+2};
    for(i=0; i<2; i++)
    {
        for(j=0; j<2; j++)
        {
            printf('%d, %d, %d, %d\n', *(*(p+i)+j), *(*(j+p)+i), 
                                    *(*(i+p)+j), *(*(p+j)+i));
        }
    }
    return 0;
}

A 1, 1, 1, 1
2, 3, 2, 3
3, 2, 3, 2
4, 4, 4, 4

B 1, 2, 1, 2
2, 3, 2, 3
3, 4, 3, 4
4, 2, 4, 2

C 1, 1, 1, 1
2, 2, 2, 2
2, 2, 2, 2
3, 3, 3, 3

D 1, 2, 3, 4
2, 3, 4, 1
3, 4, 1, 2
4, 1, 2, 3

ANS:A - 1, 1, 1, 1
2, 3, 2, 3
3, 2, 3, 2
4, 4, 4, 4

No answer description is available. Let's discuss.