private int[] MergeSort(int[] a){
		if(a.length <= 1)
			return a;
		int length = a.length;
		int mid = length/2;
		int[] left = Arrays.copyOfRange(a, 0, mid);
		int[] right = Arrays.copyOfRange(a, mid, length);
		int[] left_sorted = MergeSort(left);
		int[] right_sorted = MergeSort(right);
		return Merge(left_sorted,right_sorted);
	}