long BinSearch(StepBaby array, long searchedValue, long left, long right)
 {
     while (left < right)
     {
         long middle = (left + right) / 2;
         mHardPractice++;
         if (searchedValue == array.value[middle])
         {
             return(array.index[middle]);
         }
         else if (searchedValue < array.value[middle])
         {
             right = middle - 1;
         }
         else
         {
             left = middle + 1;
         }
     }
     return(-1);
 }
        void Sorting(StepBaby arr, long first, long last)
        {
            long p = arr.value[(last - first) / 2 + first];
            long temp;
            long i = first, j = last;

            while (i <= j)
            {
                while (arr.value[i] < p && i <= last)
                {
                    ++i;
                }
                while (arr.value[j] > p && j >= first)
                {
                    --j;
                }
                mHardPractice++;
                if (i <= j)
                {
                    temp           = arr.index[i];
                    arr.index[i]   = arr.index[j];
                    arr.index[j]   = temp;
                    mHardPractice += 6;
                    temp           = arr.value[i];
                    arr.value[i]   = arr.value[j];
                    arr.value[j]   = temp;
                    ++i; --j;
                }
            }
            mHardPractice++;
            if (j > first)
            {
                Sorting(arr, first, j);
            }
            mHardPractice++;
            if (i < last)
            {
                Sorting(arr, i, last);
            }
        }