◎設問 : 何が出力されるか答えよ

int main(void){
char *c[] = {"ENTER", "NEW", "POINT", "FIRST"};
char **cp[] = {c+3,c+2,c+1,c};
char ***cpp = cp;

printf("%s", **++cpp);
printf("%s ", *--*++cpp+3);
printf("%s", *cpp[-2]+3);
printf("%s\n", cpp[-1][-1]+1);

return 0;
}

答えはもちろん実行してみれば出力されるのですが、
なぜそのようになるのか分かりません (´・ω・`)