//[MethodImpl(MethodImplOptions.Synchronized)]
        //[MethodImpl(MethodImplOptions.AggressiveOptimization)]
        public static int GetMoves(IntWrapper intWrapper, int position)
        {
            int result = 0;

            position = intWrapper.getField(position % intWrapper.i.Length);

            result  = mul(intWrapper, position, 3);
            result += add(intWrapper, position, 2);
            updater(intWrapper, position % intWrapper.i.Length, result);

            return(result);
        }
 public static int add(IntWrapper intWrapper, int position, int add)
 {
     return(intWrapper.getField(Math.Abs(position + add) % intWrapper.i.Length));
 }
 public static int mul(IntWrapper intWrapper, int position, int mul)
 {
     return(intWrapper.getField(Math.Abs(position * mul) % intWrapper.i.Length));
 }