#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <vector>
#include <stack>
#include <deque>
#include <queue>
#include <bitset>
#include <list>
#include <map>
#include <set>
#include <iterator>
#include <algorithm>
#include <functional>
#include <utility>
#include <sstream>
#include <climits>
#include <cassert>
#define BUG puts("here!!!");
using namespace std; // 8 5 4 9 2 3 6
void heapify(int *a, int i, int size) {
int ls = 2*i, rs = 2*i + 1;
int large = i;
if(a[ls] > a[i]) large = ls;
if(a[rs] > a[large]) large = rs;
if(large != i) {
swap(a[large], a[i]);
heapify(a, large, size);
}
}
void buildHeap(int *a, int size) {
for(int i = size/2; i > 0; i++) {
heapify(a, i, size);
}
}
void heapSort(int *a, int size) {
buildHeap(a, size);
int len = size;
for(int i = len; i > 0; i--) {
swap(a[len], a[1]);
len--;
heapify(a, 1, len);
}
}
void quickSort(int *a, int left, int right) {
if(left < right) {
int l = left, r = right, x = a[l];
while(1) {
while(l < r && a[r] >= x) r--;
while(l < r && a[l] <= x) l++;
if(l >= r) break;
swap(a[l], a[r]);
}
swap(a[left], a[l]);
quickSort(a, left, l-1);
quickSort(a, l+1, right);
}
}
void mergeSort(int *a, int l, int r) {
if(l >= r) return;
int mid = (l+r) >> 1;
mergeSort(a, l, mid);
mergeSort(a, mid+1, r);
int *arr = new int[r-l+1];
int k = 0;
int i = l, j = mid+1;
while(i <= mid && j <= r) {
if(a[i] <= a[j]) arr[k++] = a[i];
else arr[k++] = a[j];
}
while(i <= mid) arr[k++] = a[i++];
while(j <= r) arr[k++] = a[j++];
for(int i = l; i <= r; i++) {
a[i] = arr[i-l];
}
delete []arr;
}
void insertSort(int *a, int len) {
int j;
for(int i = 1; i < len; i++) {
int temp = a[i];
for(j = i-1; j >= 0 && temp < a[j]; j--) {
a[j+1] = a[j];
}
a[j+1] = temp;
}
}
void bubbleSort(int *a, int len) {
for(int i = 1; i < len; i++) {
for(int j = 0; j < len-i; j++) {
if(a[j] > a[j+1]) swap(a[j], a[j+1]);
}
}
}
void selectSort(int *a, int len) {
for(int i = 0; i < len-1; i++) {
int k = i;
for(int j = i+1; j < len; i++) {
if(a[j] < a[k]) k = j;
}
swap(a[k], a[i]);
}
}
int main() {
return 0;
}