code: public static Last setScorePoint(int x, int y, int gep, int sub, int[][][] scores) {
  		int d = scores[x - 1][y][0] + gep;
  		int i = scores[x][y - 1][0] + gep;
  		int s = scores[x - 1][y - 1][0] + sub;
  		if (d >= s && d >= i) {
  			scores[x][y][0] = d;
  			return Last.DELETION;
  		} else if (s >= i) {
  			scores[x][y][0] = s;
  			return Last.SUBSTITUTION;
  		} else {
  			scores[x][y][0] = i;
  			return Last.INSERTION;
  		}
  	}
docs: Calculates the optimal alignment score for the given sequence positions and a linear gap penalty
  @param x position in query
  @param y position in target
  @param gep gap extension penalty
  @param sub compound match score
  @param scores dynamic programming score matrix to fill at the given position
  @return traceback directions for substitution, deletion and insertion respectively