Let's say we have declared: `int array[10][6]`. As far as I understand, when you say `array[i][j]`, it translates to `*(((int *)array)+i*6+j)`. But, why does it work if array would be dynamically allocated because to access an element this would be needed: `*(*(array+i)+j)`? I don't understand why `a[i][j]` would work now if it is automatically translated like in the first case. Thanks.