/*standard binary search*/
template <typename T>
int binarySearch(const vector<T> & a,const T &x){
int low = 0 , high = a.size()-1;
while(low<=high){
int mid = (low+hign)/2;
if(a[mid]<x){
low = mid+1;
}
else if(a[mid]>x){
high = mid -1 ;
}
else{
return mid;
}
}
return -1;
}
/*gcd 最大公约数*/
long gcd(ong m,long n){
while(n!=0){
long rem = m%n;
m = n;
n =rem;
}
return m;
}