#include <bits/stdc++.h>
#define ll long long
#define sti string
#define bit(n,i) ((n>>i) &1)
#define itachi ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define maxn 20005
#define fi first
#define se second
#define i18 __int128_t
 
 
using namespace std;
 
ll f[maxn];
ll nxt[maxn][35];
const ll mod=111539786;
ll block[maxn];
 
int main()
{
    itachi
    int test;
    cin>>test;
    while(test--){
        sti tmp;cin>>tmp;
        int n=1;
        sti s="";
        memset(f,0,sizeof(f));
        for(int i=0;i<tmp.size();){
            char c=tmp[i++];
            s.push_back(c);
            ll val=0;
            while(i<tmp.size() && (tmp[i]>='0' && tmp[i]<='9')){
                val=val*10+(tmp[i]-'0');
                i++;
            }
            block[n]=val;
            n++;
        }
        s=' '+s;
        for(int j=0;j<26;j++) nxt[n+1][j]=n+1;
        for(int i=n;i>=0;i--){
            for(int j=0;j<26;j++) nxt[i][j]=nxt[i+1][j];
             nxt[i][s[i]-'a']=i;
        }
        f[0]=1; block[0]=1;
        for(int i=0;i<=n;i++){
            for(int j=0;j<26;j++){
                if(nxt[i+1][j]<=n){
                    if(j!=(s[i]-'a')){
                        f[nxt[i+1][j]]=(f[nxt[i+1][j]]+((block[i]*f[i])%mod)%mod);
                    }
                    else {
                        f[nxt[i+1][j]]+=f[i];
                        f[nxt[i+1][j]]%=mod;
                    }
                }
            }
        }
        ll ans=0;
        for(int i=1;i<=n;i++) {
            ans=(ans+(f[i]*block[i])%mod)%mod;
        }
        cout<<ans<<'\n';
    }
    return 0;
}
 
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgc3RpIHN0cmluZwojZGVmaW5lIGJpdChuLGkpICgobj4+aSkgJjEpCiNkZWZpbmUgaXRhY2hpIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKI2RlZmluZSBtYXhuIDIwMDA1CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpMTggX19pbnQxMjhfdAoKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpsbCBmW21heG5dOwpsbCBueHRbbWF4bl1bMzVdOwpjb25zdCBsbCBtb2Q9MTExNTM5Nzg2OwpsbCBibG9ja1ttYXhuXTsKCmludCBtYWluKCkKewogICAgaXRhY2hpCiAgICBpbnQgdGVzdDsKICAgIGNpbj4+dGVzdDsKICAgIHdoaWxlKHRlc3QtLSl7CiAgICAgICAgc3RpIHRtcDtjaW4+PnRtcDsKICAgICAgICBpbnQgbj0xOwogICAgICAgIHN0aSBzPSIiOwogICAgICAgIG1lbXNldChmLDAsc2l6ZW9mKGYpKTsKICAgICAgICBmb3IoaW50IGk9MDtpPHRtcC5zaXplKCk7KXsKICAgICAgICAgICAgY2hhciBjPXRtcFtpKytdOwogICAgICAgICAgICBzLnB1c2hfYmFjayhjKTsKICAgICAgICAgICAgbGwgdmFsPTA7CiAgICAgICAgICAgIHdoaWxlKGk8dG1wLnNpemUoKSAmJiAodG1wW2ldPj0nMCcgJiYgdG1wW2ldPD0nOScpKXsKICAgICAgICAgICAgICAgIHZhbD12YWwqMTArKHRtcFtpXS0nMCcpOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJsb2NrW25dPXZhbDsKICAgICAgICAgICAgbisrOwogICAgICAgIH0KICAgICAgICBzPScgJytzOwogICAgICAgIGZvcihpbnQgaj0wO2o8MjY7aisrKSBueHRbbisxXVtqXT1uKzE7CiAgICAgICAgZm9yKGludCBpPW47aT49MDtpLS0pewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPDI2O2orKykgbnh0W2ldW2pdPW54dFtpKzFdW2pdOwogICAgICAgICAgICAgbnh0W2ldW3NbaV0tJ2EnXT1pOwogICAgICAgIH0KICAgICAgICBmWzBdPTE7IGJsb2NrWzBdPTE7CiAgICAgICAgZm9yKGludCBpPTA7aTw9bjtpKyspewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPDI2O2orKyl7CiAgICAgICAgICAgICAgICBpZihueHRbaSsxXVtqXTw9bil7CiAgICAgICAgICAgICAgICAgICAgaWYoaiE9KHNbaV0tJ2EnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGZbbnh0W2krMV1bal1dPShmW254dFtpKzFdW2pdXSsoKGJsb2NrW2ldKmZbaV0pJW1vZCklbW9kKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZbbnh0W2krMV1bal1dKz1mW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBmW254dFtpKzFdW2pdXSU9bW9kOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBsbCBhbnM9MDsKICAgICAgICBmb3IoaW50IGk9MTtpPD1uO2krKykgewogICAgICAgICAgICBhbnM9KGFucysoZltpXSpibG9ja1tpXSklbW9kKSVtb2Q7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGFuczw8J1xuJzsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==