void merge(int data[][4],int n, int left,int middle1, int middle2, int right, int a)
{
 int leftind=left;
 int rightind=middle2;
 int com=left;
 int comed[6000][4];

 

 while(leftind<=middle1 && rightind<=right) //leftind가 middle1보다 작거나같을때 이거나 rightind가 right보다 작거나 같을때가 아닐때까지 수행하라
 {                                          //while문시작
  if(data[leftind][a]<=data[rightind][a]) //만약 data[leftind][a]가 data[rightind][a]보다 작거나 같다면 다음을 수행하라
  {                                       //if 문 시작

   comed[com][0]=data[leftind][0]; //data[leftind][0]를comed[com][0]에 입력
   comed[com][1]=data[leftind][1]; //data[leftind][1]를comed[com][1]에 입력
   comed[com][2]=data[leftind][2]; //data[leftind][2]를comed[com][2]에 입력
   comed[com][3]=data[leftind][3]; //data[leftind][3]를comed[com][3]에 입력
   com++;                          //com에 +1
   leftind++;                      //leftind에 +1 
  }                                       //if 문 끝
 
  else                                    //만약 data[leftind][a]가 data[rightind][a]보다 크다면 다음을 수행하라
  {                                       //else문 시작
   comed[com][0]=data[rightind][0]; //data[rightind][0]를 comed[com][0]에 입력
   comed[com][1]=data[rightind][1]; //data[rightind][1]를 comed[com][1]에 입력
   comed[com][2]=data[rightind][2]; //data[rightind][2]를 comed[com][2]에 입력
   comed[com][3]=data[rightind][3]; //data[rightind][3]를 comed[com][3]에 입력
   com++;                           //com에 +1
   rightind++;                      //rightind에 +1
  }                                        //else문 끝


 } //while문 끝

 if(leftind==middle2)     //만약 leftind과 middle2가 같다면 다음을 수행하여라
 {                        //if문 시작
  while(rightind<=right)//rightind가 right보다 커질때까지 다음을수행하여라
  {
   comed[com][0]=data[rightind][0];  //data[rightind][0]를 comed[com][0]에 입력
   comed[com][1]=data[rightind][1];  //data[rightind][1]를 comed[com][1]에 입력
   comed[com][2]=data[rightind][2];  //data[rightind][2]를 comed[com][2]에 입력
   comed[com][3]=data[rightind][3];  //data[rightind][3]를 comed[com][3]에 입력
   com++;                            //com에 +1
   rightind++;                       //rightind에 +1
  }//while문 끝

 }//if 문 끝

 else //만약 leftind과 middle2가 같지 않다면 다음을 수행하여라
 {
  while(leftind<=middle1) //leftind가 millde1보다 클때까지 다음을 수행하여라
  {                       //while문 시작
   comed[com][0]=data[leftind][0]; //data[leftind][0]를 comed[com][0]에 입력
   comed[com][1]=data[leftind][1]; //data[leftind][1]를 comed[com][1]에 입력
   comed[com][2]=data[leftind][2]; //data[leftind][2]를 comed[com][2]에 입력
   comed[com][3]=data[leftind][3]; //data[leftind][3]를 comed[com][3]에 입력
   com++;                          //com에 +1
   leftind++;                      //leftind에 +1
  } //while문 끝
 }//else문 끝


 for(int i=left; i<=right; i++)  //left가 i이고 i를 1씩 추가하여 i가 right보다 작을때까지 수행하여라
 {                               //for문 시작
  data[i][0]=comed[i][0]; //comed[i][0]를 data[i][0]에 입력
  data[i][1]=comed[i][1]; //comed[i][1]를 data[i][1]에 입력
  data[i][2]=comed[i][2]; //comed[i][2]를 data[i][2]에 입력
  data[i][3]=comed[i][3]; //comed[i][3]를 data[i][3]에 입력

 }                               //for문 끝
}

void merge(int data[][4],int n , int low,int high ,int a)
{
 if((high-low)>=1)
 {
  int middle1= (high+low)/2;
  int middle2=middle1+1;

  merge(data,n,low,middle1, a);
  merge(data,n,middle2,high, a);


  merge(data,n,low,middle1,middle2,high, a);

 }
}

int solving (int(*data)[4])

{
 int i; //for문을 위한
 int swap;// onedata swap을 위한
 int count1=0;
 int count2=0;


 for(i=0; i<size;i++)
 {
  if(data[i][1]>data[i][2])
  {
   swap=data[i][2];    
   data[i][2]=data[i][1];
   data[i][1]=swap;
   data[i][3]=1;
  }

 }

 

 merge(data,size , 0,5999 ,2);
 merge(data,size , 0,5999 ,1);


 for(i=0;i<size;i++)
 {
  if(data[i][3]==0)
  {
   space[count1][0]=data[i][0];

   count1++;

  }
  else if (data[i][3]==1)
  {
   space[size-1-count2][0]=data[i][0];

   count2++;
  }
 }


 return 0;
}