#include<bits/stdc++.h>
using namespace std;
const int BUFSIZE=1<<20;
char ibuf[BUFSIZE],*is=ibuf,*it=ibuf;
char getc(){
if(is==it)
it=(is=ibuf)+fread(ibuf,1,BUFSIZE,stdin);
return is==it?EOF:*is++;
}
int reads(){
int ret=0;
bool sign=0;
char ch=getc();
while(!isdigit(ch)){
sign|=ch=='-';
ch=getc();
}
while(isdigit(ch)){
ret=ret*10+ch-'0';
ch=getc();
}
return sign?-ret:ret;
}
int n,m,l,r,isprime[1000005],prime[10000],cnt,p[1000005];
int main(){
n=reads(),m=reads();
memset(isprime,1,sizeof(isprime));
isprime[0]=isprime[1]=0;
for(int i=2;i<=m;i++){
if(isprime[i]) prime[++cnt]=i;
for(int j=1;j<=cnt;j++){
if(i*prime[j]>n) break;
isprime[i*prime[j]]=0;
if(i%prime[j]==0) break;
}
}
while(n--){
l=reads(),r=reads();
if(r>m || l<1) cout<<"Crossing the line\n";
else{
int ans=0;
for(int i=l;i<=r;i++){
if(isprime[i]) ans++;
}
cout<<ans<<"\n";
}
}
return 0;
}
https://www.luogu.com.cn/record/162873513