static void Main()
 {
     Element[] elements = new Element[N];
     InitializeArray(elements);
     ShiftLeft(elements);
     PrintArray(elements);
 }
        private const int N = 10; /* Брой елементи в масива */

        #endregion Fields

        #region Methods

        private static void InitializeArray(Element[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                array[i].Data = i;
            }
        }
 static void PrintArray(Element[] array)
 {
     for (int i = 0; i < array.Length; i++)
     {
         Console.Write("{0} ", array[i].Data);
     }
     Console.WriteLine();
 }
 /* Разменя местата на подмасивите m[a..a+l-1] и m[b..b+l-1] */
 private static void Swap(Element[] array, int a, int b, int l)
 {
     for (int i = 0; i < l; i++)
     {
         Element tempElement = array[a + i];
         array[a + i] = array[b + i];
         array[b + i] = tempElement;
     }
 }
 /* Измества масива m[] на k позиции наляво.
    * рекурсивен процес, реализиран итеративно } */
 static void ShiftLeft(Element[] array)
 {
     int i = K;
     int p = K;
     int j = N - K;
     while (i != j)
         if (i > j)
         {
             Swap(array, p - i, p, j);
             i -= j;
         }
         else
         {
             Swap(array, p - i, p + j - i, i);
             j -= i;
         }
     Swap(array, p - i, p, i);
 }
 public MouseEvtWithElement(Element element, Point pt)
     : base(pt)
 {
     this.Element = element;
 }