public static ArrayList<ArrayList<Integer>> generate(int numRows) {
		ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
		if (numRows == 0)
			return result;
		ArrayList<Integer> nextLevel = new ArrayList<Integer>();
		ArrayList<Integer> parentLevel = new ArrayList<Integer>();
		nextLevel.add(1);
		result.add(nextLevel);
		parentLevel.add(1);
		nextLevel = new ArrayList<Integer>();
		for (int i = 1; i < numRows; i++) {
			nextLevel.add(1);
			for (int j = 0; j < i - 1; j++) {
				nextLevel.add(parentLevel.get(j) + parentLevel.get(j + 1));
			}
			nextLevel.add(1);
			result.add(nextLevel);
			parentLevel = new ArrayList<Integer>();
			parentLevel = nextLevel;
			nextLevel = new ArrayList<Integer>();
		}
		return result;
	}