private int biggestOffsprings(int i) {
		int firstChild = 2 * i, lastChild = 2 * i + 1;
		int firstGrand = 4 * i, lastGrand = 4 * i + 3;
		int biggest = arr[firstChild], biggestIndex = firstChild;
		int bound = currentSize < lastChild ? currentSize : lastChild;
		for(int j = firstChild; j <= bound; ++j) {
			if(arr[j] > biggest) {
				biggest = arr[j];
				biggestIndex = j;
			}
		}
		
		if(this.currentSize < firstGrand) return biggestIndex;
		bound = currentSize < lastGrand ? currentSize : lastGrand;
		for (int j = firstGrand; j <= bound; ++j) {
			if (arr[j] >  biggest) {
				biggest = arr[j];
				biggestIndex = j;
			}
		}
		return biggestIndex;
	}