boolean searchAux(int[][] matrix, int s, int e, int target) {
		int cols = matrix[0].length;

		int mid = (s + e) / 2;
		if (mid - 1 < s) {
			if (s == e)
				return searchRow(matrix[s], 0, cols - 1, target);
			else if (target > matrix[s][cols - 1]) {
				return searchRow(matrix[e], 0, cols - 1, target);
			} else
				return searchRow(matrix[s], 0, cols - 1, target);
		} else {
			if (target > matrix[mid][cols - 1]) {
				return searchAux(matrix, mid + 1, e, target);
			} else if (target < matrix[mid][0]) {
				return searchAux(matrix, s, mid - 1, target);
			} else
				return searchRow(matrix[mid], 0, cols - 1, target);
		}
	}