#include <iostream>
#include <algorithm>

typedef union {
	int data[2];
} Pair;

bool compare(Pair i,Pair j) { return i.data[0] < j.data[0]; }

int main() {
	int N=5;
	int data[10] = {1,2, 7,8, 13,14, 4,5, 10,11};
	Pair *pairs  = (Pair *)((void *)data); 
	
	std::cout << "unsorted" << std::endl;
	for(int i=0; i<N;++i) std::cout << i << ": (" << pairs[i].data[0] << ", " << pairs[i].data[1] << ")" << std::endl;
	
	std::sort(pairs, pairs+N, compare);
	
	std::cout << "sorted" << std::endl;
	for(int i=0; i<N;++i) std::cout << i << ": (" << pairs[i].data[0] << ", " << pairs[i].data[1] << ")" << std::endl;
	
	return 0;
}