intupper_bound_search(int a[],int l,int r){while(l < r){int mid = l + r >>1;if(check_upper(mid)) r = mid;else l = mid +1;}return l;}intlower_bound_search(int a[],int l,int r){while(l < r){int mid = l + r +1>>1;if(check_lower(mid)) l = mid;else r = mid -1;}return l;}