static LinkedList<Region> sort(LinkedList<Region> unsorted)
	{
		if (unsorted.size() <= 1)
			return unsorted;
		int mid = unsorted.size()/2;
		int size = unsorted.size();
		LinkedList<Region> sorted = new LinkedList<Region>();
		LinkedList<Region> first = new LinkedList<Region>();
		LinkedList<Region> second = new LinkedList<Region>();
		for (int i = 0; i < mid; i++)
			first.addLast(unsorted.removeFirst());
		for (int i = mid; i < size; i++)
			second.addLast(unsorted.removeFirst());
		first = sort(first);
		second = sort(second);
		int i = 0;
		int j = 0;
		while (i < mid && j < size-mid)
		{
			if (first.getFirst().size() < second.getFirst().size())
			{
				sorted.addLast(first.removeFirst());
				i++;
			}
			else
			{
				sorted.addLast(second.removeFirst());
				j++;
			}
		}
		while (i < mid)
		{
			sorted.addLast(first.removeFirst());
			i++;
		}
		while (j < size-mid)
		{
			sorted.addLast(second.removeFirst());
			j++;
		}
		return sorted;
	}