private static List<Integer> merge(List<Integer> b, List<Integer> c) {

		List<Integer> a = new ArrayList<Integer>();
		int countB = 0;
		int countC = 0;

		int bSize = b.size();
		int cSize = c.size();
		
		
		while ((countB < bSize) || (countC < cSize)) {
			if ((countB >= bSize) && (countC < cSize)) {
				a.add(c.get(countC++));
			} else if ((countB < bSize) && (countC >= cSize)) {
				a.add(b.get(countB++));
			} else if ((b.get(countB).compareTo(c.get(countC)) < 0)) {
				a.add(b.get(countB++));
				comparisonCount++;
			} else if ((b.get(countB).compareTo(c.get(countC)) > 0)) {
				a.add(c.get(countC++));
				comparisonCount++;
			} else {
				a.add(b.get(countB++));
				a.add(c.get(countC++));
				comparisonCount++;
			}
		}

		return a;

	}