how does pointer of pointer work in this c code :     int r = 50;
    	int *p;
	    int **k;
	    int ***m;
	    printf( "r: %d ", r );
	    p = &r;
	    k = &p;
	    m = &k;
	    ***m = 100;  //line 9
	    printf( "r: %d\n", r );

When there is only one pointer, i can understand that we take 100 and we assign it to the variable at the adress which is being held by the pointer. But what exactly is happening step by step when we do this with more than one pointer level? (line 9)
