In a block-structured language with lexical (static) scoping, an activation record's access link (or static link) points to the activation record of its immediate enclosing lexical scope (the procedure where it is statically declared), not the caller.
Let's analyze the lexical nesting in the given code:
main is the outermost program scope.
Procedure A1 is declared inside main, so any activation of A1 has its access link pointing to the activation record of main [d1].
Procedure A2 is declared inside main, so any activation of A2 has its access link pointing to main [d1].
Procedure A21 is declared inside A2, so any activation of A21 has its access link pointing to A2 [d1].
For the calling sequence Main→A1→A2→A21→A1:
Main: Base activation record.
A1 (called by Main): Access link →Main.
A2 (called by A1): Access link →Main.
A21 (called by A2): Access link →A2.
A1 (called by A21): Access link →Main.
This exact configuration of access links corresponds to option (D) [d1].