Source: http://web.stanford.edu/class/cs106j/handouts/35-MultidimensionalArrays.pdf