Still not sure what your problem is. Your X, Y, and Z Indexes are already incremental by nature, and don't have to be fixed, the way you're using the array. To add a character, push 0 on the Z axis, then you will get a new Z layer full of 0s. The character ID would correlate to the Z index - charID 0 would be the top layer, charID 1 would be second, ect.
Then to set the marker, you would do Set Array at (Time, Place, CharID) to 1.
Edit: Seems like a pretty inefficient way to use an array to me... I would set up a 2d array, width (character count), height 2, depth 1. The first row would be the time, second row would be place, and the x index would be the character ID. You can use push front/back on x axis to add characters, then set the values at Array.At(0,0) and (0,1) for time and place. (Or Array.At(Array.Width-1,0) and (Array.Width-1,1) for the back)
I think I'm still misunderstanding your question.