Your analysis is partially correct, regarding ptr pointing to the 3rd 2D array,
ptr + 3 = ptr + (y * z * sizeof(int) * 3), where y and z are sizes of 2nd and 3rd dimension of crr (In our case, y = z = 5)
So, ptr + 3 = ptr + 5 * 5 * 3 * sizeof(int)
Since we can think memory as a linear array, the numbers are arranged as follows,
crr[0][0][0], crr[0][0][1], crr[0][0][2], crr[0][0][3], crr[0][0][4], crr[0][1][0] ...
Now, If you calculate the indices where ptr+ 3 points to, you can clearly see it is crr[3][0][0]
Since ptr is only a Single pointer (only one level of redirection is used)