Suppose we have
const int **pp2= &p1;
const int n=13;
We can understand it with a simple example, we you write below declaration,
const int *p;
It say *p is constant not p. p can store any address pointing to constant integer.
Similarly, const int **p;
It says pointer to pointer to a constant int. you can change p and *p but not **p. *P can hold any address pointing to contant integer like &n in your case and you can change *P with any addresses pointing to constant integer.
Hope it explains you more:::)