#include #define X first #define Y second #define pb push_back #define mp make_pair #define SZ(X) (X.size()) #define mst(a,b) memset((a),(b),sizeof(a)) #define lowbit(a) ((a)&(-a)) using namespace std; typedef long long LL; typedef long long ll; typedef pair pii; typedef pair pll; const int N = 5e5 + 10; const int mod = 1e9+7; const int inf = 0x3f3f3f3f; const LL INF = 1LL << 61; const int maxn=10000+10; int bit[210][maxn],n; void update(int k,int pos,int val){ while (pos<=n){ bit[k][pos]=(1ll*bit[k][pos]+val)%mod; pos+=lowbit(pos); } } int query(int k,int pos){ int res=0; while (pos){ res=(1ll*res+bit[k][pos])%mod; pos-=lowbit(pos); } return res; } int ans[maxn]; void init(int n){ for (int i=1;i<=200;i++) for (int j=1;j<=n;j++) bit[i][j]=0; mst(ans,0); } int main() { #ifdef local freopen("in.txt", "r", stdin); #endif // local ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T,cas=1; cin>>T; while (T--){ cin>>n; init(n); for (int i=1;i<=n;i++){ int x; cin>>x; ans[1]++; update(1,x,1); for (int j=2;j<=min(200,i);j++){ int tmp=query(j-1,x-1); update(j,x,tmp); ans[j]=(ans[j]+tmp)%mod; } } cout<<"Case #"<