用map离散
#include <map>
#include <set>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <string>
#include <time.h>
#include <cstdio>
#include <math.h>
#include <iomanip>
#include <cstdlib>
#include <limits.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define PI acos(-1.0)
#define N 1005
#define MAX INT_MAX
#define MIN INT_MIN
#define eps 1e-8
#define FRE freopen("a.txt","r",stdin)
map<LL, LL> mp[43];
LL gcd(LL a,LL b){
return (b==0) ? a:gcd(b,a%b);
}
LL lcm(LL a,LL b){
return a*b/gcd(a,b);
}
void DP(){
LL i;
mp[1][1]=1;
for(i=2;i<=40;i++){
mp[i]=mp[i-1];
mp[i][i]++;
map<LL ,LL>::iterator it;
for(it=mp[i-1].begin();it!=mp[i-1].end();it++){
LL lc=lcm(i,it->first);
mp[i][lc]+=it->second;
}
}
}
int main(){
DP();
int t;
int ca=1;
scanf("%d",&t);
while(t--){
int n;
LL m;
scanf("%d %I64d",&n,&m);
map<LL ,LL>::iterator i;
LL ans=0;
for(i=mp[n].begin();i!=mp[n].end();i++){
if(i->first>=m)
ans+=i->second;
}
printf("Case #%d: %I64d\n",ca++,ans);
}
return 0;
}