public static List<Integer> RunMergeSort(List<Integer> list) {
		List<List<Integer>> merges = new ArrayList<List<Integer>>();
		for (int i : list) {
			merges.add(Arrays.asList(i));
		}
		while (merges.size() > 1) {
			List<List<Integer>> newMerges = new ArrayList<List<Integer>>();
			for (int i = 0; i < merges.size(); i += 2) {
				if (i == merges.size() - 1) {
					newMerges.add(merges.get(i));
				}
				else {
					newMerges.add(MergeTwoSortedLists(merges.get(i), merges.get(i + 1)));
				}
			}
			merges = newMerges;
		}
		return merges.get(0);
	}