#include <iostream>
using namespace std;

void shellsort(int ar[], int N)
  {
    int  gap = N/2;
    while (gap > 0)
      {
        int swaps = 1;
        while ( swaps )
          {
            swaps = 0;
            for (int i = 0; i < N-gap; i++)
              {
                if (ar[i] > ar[i+gap])
                  {
                    swap(ar[i], ar[i+gap]);
                    swaps = 1;
                  }
              }
          }
        gap = gap/2;
      }
  }

int main()
  {
    int ar[] =
      {
        #include "shellsort.data"
      };
    int N = sizeof(ar)/sizeof(ar[0]);
    for (int i = 0; i < N; i++) cout << ar[i] << ' ';
    cout << endl;

    shellsort(ar, N);

    cout << "result" << endl;
    for (int i = 0; i < N; i++) cout << ar[i] << ' ';
    cout << endl;
  }