Pointers - Programming

Q1:

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

int main()
{
    int arr[2][2][2] = {10, 2, 3, 4, 5, 6, 7, 8};
    int *p, *q;
    p = &arr[1][1][1];
    q = (int*) arr;
    printf("%d, %d\n", *p, *q);
    return 0;
}

A 8, 10

B 10, 2

C 8, 1

D Garbage values

ANS:A - 8, 10

No answer description is available. Let's discuss.