Parent error

Hello, I have a problem with defining parents in Unity.

I have an empty gameobject Town with 6 Building objects inside. During the game player places 10 Citizen objects inside these buildings and they become children each of their own building.
During the game a random Citizen is picked and variable Location is defined as the Building where the picked Citizen is at the moment.

GameObject Location=Citizen.transform.parent.gameObject;

(In other words, the ierarchy is Town->Building->Citizen)
And it works almost perfectly fine, but sometimes Location is defined as Town, not as Building. What can be the problem here?

I’ve just found something really strange while debugging. Turns out in this line

Victims=Location.GetComponentsInChildren<Transform>();

the Victims[0] object is not the first child of Location but the Location itself.

Victims[0]=Location
Victims[1]=CitizenChild1
Victims[2]=CitizenChild2

and etc.

I wanted to ask if the first index in C# arrays is 0 or 1? And does the last index equal Array.Length or Array.Length-1?