func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long maxx = 1e5 + 20, sqr = 150, mod = 1e9 + 7;   long long len, n, dp[maxx][sqr][2], q, pw25[maxx], pw26[maxx], pwmod[maxx],       fac[maxx], tmp[maxx];   string s;   long long pw(long long a, long long b) {     if (!b) return 1ll;     long long x = pw(a, b / 2);     x = (x * x) % mod;     if (b % 2) x = (x * a) % mod;     return x;   }   long long sel(long long a, long long b) {     long long x = 1ll;     x = (x * fac[a]) % mod;     x = (x * pwmod[b]) % mod;     x = (x * pwmod[a - b]) % mod;     return x;   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     pw25[0] = pw26[0] = 1;     for (long long i = 1; i < maxx; i++)       pw25[i] = (pw25[i - 1] * 25) % mod, pw26[i] = (pw26[i - 1] * 26) % mod;     fac[0] = 1;     for (long long i = 1; i < maxx; i++) fac[i] = (fac[i - 1] * i) % mod;     for (long long i = 0; i < maxx; i++) pwmod[i] = pw(fac[i], mod - 2);     for (long long j = 0; j < sqr; j++) {       dp[j][j][1] = dp[j][j][0] = 1;       for (long long i = j + 1; i < maxx; i++) {         dp[i][j][0] = (((dp[i - 1][j][0] * 26) % mod) +                        (j >= 1 ? dp[i - 1][j - 1][1] : 0)) %                       mod;         dp[i][j][1] = (((dp[i - 1][j][1] * 25) % mod) +                        (j >= 1 ? dp[i - 1][j - 1][1] : 0)) %                       mod;       }     }     long long c = 0;     cin >> n >> s;     len = s.length();     if (len >= sqr) {       fill(tmp, tmp + maxx, 0);       tmp[len - 1] = 1;       for (long long j = len; j < maxx; j++)         tmp[j] = (((tmp[j - 1] * 26ll) % mod) +                   (((long long)sel(j, len - 1) * pw25[j + 1 - len]) % mod)) %                  mod;     }     for (long long i = 0; i < n; i++) {       long long type;       cin >> type;       if (type == 1) {         cin >> s, len = s.length();         if (len >= sqr) {           fill(tmp, tmp + maxx, 0);           tmp[len - 1] = 1;           for (long long j = len; j < maxx; j++)             tmp[j] = (((tmp[j - 1] * 26ll) % mod) +                       (((long long)sel(j, len - 1) * pw25[j + 1 - len]) % mod)) %                      mod;         }       } else {         c++;         cin >> q;         if (len < sqr) {           if (len > q)             cout << 0 <<   n ;           else             cout << dp[q][len][0] <<   n ;           continue;         }         long long ans = 0ll;         cout << tmp[q - 1] <<   n ;       }     }     return 0;   }   