We also need to know what the actual shortest path is. To do this, we use another array codice_41; a "predecessor array". This array records the path to any square codice_42. The predecessor of codice_42 is modeled as an offset relative to the index (in codice_38) of the precomputed path cost of codice_42. To reconstruct the complete path, we lookup the predecessor of codice_42, then the predecessor of that square, then the predecessor of that square, and so on recursively, until we reach the starting square. Consider the following code: