#include <cstdio>
#include <cstring>
#define MOD 1000000007
using namespace std;
int d[1000010];
int posMAX=2;
int main()
{
int T;
scanf("%d",&T);
memset(d,0,sizeof(d));
d[1]=1;
d[2]=2;
for(int t=1; t<=T; t++)
{
int n;
scanf("%d",&n);
if(n>posMAX)///记忆化
{
for(int i=posMAX+1; i<=n; i++)
{
long long tmp=((long long)(i-1)*d[i-2])%MOD;///取余操作
d[i]=(d[i-1]+(int)tmp)%MOD;
}
posMAX=n;
}
printf("Case #%d:\n",t);
printf("%d\n",d[n]);
}
return 0;
}
#include <cstring>
#define MOD 1000000007
using namespace std;
int d[1000010];
int posMAX=2;
int main()
{
int T;
scanf("%d",&T);
memset(d,0,sizeof(d));
d[1]=1;
d[2]=2;
for(int t=1; t<=T; t++)
{
int n;
scanf("%d",&n);
if(n>posMAX)///记忆化
{
for(int i=posMAX+1; i<=n; i++)
{
long long tmp=((long long)(i-1)*d[i-2])%MOD;///取余操作
d[i]=(d[i-1]+(int)tmp)%MOD;
}
posMAX=n;
}
printf("Case #%d:\n",t);
printf("%d\n",d[n]);
}
return 0;
}