#include using namespace std; const int N=1e4+5,Mod=1e9+7,M=N/2; int a[N],BIT[M][N],n,ans[N]; // BIT[len][num] inline int lowbit(int x) {return x&(-x);} void add(int BIT[],int x,int val) { for(int i=x;i<=n;i+=lowbit(i)) BIT[i]=(BIT[i]+val)%Mod; } int sum(int BIT[],int x) { int res=0; for(int i=x;i;i-=lowbit(i)) res=(res+BIT[i])%Mod; return res; } int main() { int T,cas=0; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int max_len=1; for(int i=1;i<=n;i++) // n num { for(int j=max_len+1;j>=2;j--) // n len { // x = &b[i][j] int x=sum(BIT[j-1],a[i]); if(x && j==max_len+1) max_len++; add(BIT[j],a[i],x); } // b[i][1] = 1; x= &b[i][1] ; add(BIT[1],a[i],1); } printf("Case #%d:",++cas); for(int i=1;i<=n;i++) { if(i>max_len) ans[i]=0; else ans[i]=sum(BIT[i],n); printf(" %d",ans[i]); } puts(""); memset(BIT,0,sizeof(BIT[0])*(max_len+1)); } return 0; }