//去掉根节点后若有M个子节点则 为了使到同一层的节点所拥有的子节点数相等,M个子树包含的节点数相等
(i-1)%M=0&&子树也要满足条件&&子树的结构也是相同的所以递推即可
#include <iostream>
#include <algorithm>
#include <list>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <vector>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int N= 1e3+20;
ll dp[N];
int main()
{
memset(dp,0,sizeof(dp));
//去掉根节点后若有M个子节点则 为了使到同一层的节点所拥有的子节点数相等,M个子树包含的节点数相等
// (i-1)%M=0&&子树也要满足条件则dp
dp[1]=1;
for(int i=2;i<=1000;i++)
{
for(int j=1;j<=i-1;j++)
{
if((i-1)%j==0)
{
dp[i]=(dp[i]+dp[j])%mod;
}
}
}
int n,cas=0;
while(cin>>n)
{
printf("Case %d: %I64d\n",++cas,dp[n]);
}
return 0;
}