public ListNode mergeKLists(ListNode[] lists) {
		int n = lists.length;
		if (lists == null || n == 0)
			return null;
		if (n == 1)
			return lists[0];
		if (n == 2)
			return merge(lists[0], lists[1]);
		int i = n / 2;
		return merge(mergeKLists(Arrays.copyOfRange(lists, 0, i)),
				mergeKLists(Arrays.copyOfRange(lists, i, n)));
	}