private boolean checkBST(int start, int end) {
		if(start == end) {
			return true;
		}
		
		int x = xs[start];
		ys[yIdx++] = x;
		
		int rightStart = end - 1;
		while(rightStart > start && xs[rightStart] >= x) {
			rightStart -= 1;
		}
		rightStart += 1;
		if(checkBST(rightStart, end)) {
			int leftStart = rightStart - 1;
			while(leftStart > start && xs[leftStart] < x) {
				leftStart -= 1;
			}
			
			leftStart += 1;
			
			if(leftStart != start + 1) {
				return false;
			} else {
				return checkBST(leftStart, rightStart);
			}
		} else {
			return false;
		}
	}