/*
思想:逼近 迫使 l==r
查找 最左边的数 check { 第一个>=x}
while(l < r){
int mid = l+r>>1;
if(check (mid)) r = mid;
else l = mid+1;
}
查找 最右边的数 check { 最后一个 <= x }
while(l < r){
int mid = l+r+1 >>1;
if(check (mid)) l = mid;
else l = mid -1;
}
*/
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
const int N = 100010;
int a[N];
int LS(int l ,int r,int x){//第一个>= x
while(l[HTML_REMOVED]>1;
if(a[mid] >= x) r= mid;
else l = mid+1;
}
return l;
}
int RS(int l ,int r,int x){//最后一个<= x
while(l[HTML_REMOVED]>1;
if(a[mid] <= x) l = mid;
else r = mid -1;
}
return l;
}
int main(){
int m , n ;
scanf(“%d”“%d”,&m,&n);
for (int i = 0 ; i < m; i++ )
scanf(“%d”,&a[i]);
while(n–){
int x;
scanf(“%d”,&x);
int l = LS(0 ,m-1, x);
int r = RS(0, m-1, x);
if(a[l] != x) cout<<”-1 -1”<<endl;
else cout<<l<<” “<<r<<endl;
}
}