#include <iostream>
#include <bits/stdc++.h>
typedef long long ll;

using namespace std;
const int N = 55;
int test_no = 0; 
int n;
int dp[N][N];
int vis[N][N]; 
string s; 
vector<ll> pref; 
vector<ll> suf; 
ll M = 1e9 + 7; 

ll solve(int l, int r){
if(l >= r) return 1ll; 
if(l == (r - 2)) return 1ll;
if(vis[l][r]== test_no) 
    return dp[l][r]; 
vis[l][r] = test_no; 

ll ans = 1ll; 
//cout<<" -> "<<l<<" "<<r<<endl;
for(int i = l + 1; i < r ; i++){
      for(int j = (r - 1); j > i ; j--){
            ll suml = pref[i] - pref[l]; 
            ll sumr = suf[j] - suf[r]; 
            if(suml == sumr) ans = (ans + solve(i,j))%M; 
      }
}
//cout<<"for : "<<l<<" "<<r<<" ans: "<<ans<<endl;
return dp[l][r] = ans; 
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	
	memset(dp,-1,sizeof(dp));
	int t; cin>>t; 
    while(t--){
       test_no++; 
       cin>>s; n = s.length(); 
       pref.clear(); pref.resize(n+2,0); 
       suf.clear(); suf.resize(n+2,0); 
       for(int i = 1 ; i <=n; i++) 
          pref[i] = pref[i- 1] + (s[i-1] - '0'); 
       pref[n+1] = pref[n]; 
       for(int i = n; i>=1;i--) 
           suf[i] = suf[i + 1] + (s[i - 1] - '0'); 
       suf[0] = suf[1]; 
       cout<<solve(0, n + 1)<<endl; 
    }
	
}