private int doTraceback() {
		int score;
		// First, do the actual traceback.
		score =  doTracebackAt(matrix.length-1, matrix[0].length-1);
if (false) {		
		int diag = matrix.length < matrix[0].length ? matrix.length : matrix[0].length;
		int count = 0;
		for (int slice = 0; slice < diag; slice++) {
			int localCount = 0;
			if (traceback[slice][slice] > 0) {
				traceback[slice][slice] += count + localCount;
				localCount++;
			}
			for (int i=slice+1; i < matrix.length; i++) {
				if (traceback[i][slice] > 0) {
					traceback[i][slice] += count + localCount;
					localCount++;
				}
			}
			for (int j=slice+1; j < matrix[0].length; j++) {
				if (traceback[slice][j] > 0) {
					traceback[slice][j] += count + localCount;
					localCount++;
				}
			}
			count += localCount - 1;
		}
}		
		return score;
	}