func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 1000000007;   char s[100005];   long long dp[100005], bit[100005], ans[100005], bit2[100005], gbit2[100005],       B[100005], GB[100005], gbit[100005], T, len, i, j, A, o;   struct node {     int x, y, z;   } a[100005];   int cmp(node i, node j) { return i.y < j.y; }   int quick(int a, int b) {     int ans = 1;     while (b) {       if (b & 1) ans = 1ll * ans * a % MOD;       a = 1ll * a * a % MOD;       b >>= 1;     }     return ans;   }   long long C(int x, int y) { return B[x] * GB[x - y] % MOD * GB[y] % MOD; }   int main() {     bit[0] = 1;     B[0] = 1;     for (i = 1; i <= 100001; i++)       bit[i] = bit[i - 1] * 25 % MOD, B[i] = B[i - 1] * i % MOD;     for (i = 0; i <= 100001; i++)       gbit[i] = quick(bit[i], MOD - 2), GB[i] = quick(B[i], MOD - 2);     bit2[0] = 1;     for (i = 1; i <= 100001; i++) bit2[i] = bit2[i - 1] * 26 % MOD;     for (i = 0; i <= 100001; i++) gbit2[i] = quick(bit2[i], MOD - 2);     scanf( %d , &T);     scanf( %s , s);     len = strlen(s);     for (i = 1; i <= T; i++) {       scanf( %d , &A);       if (A == 1) {         scanf( %s , s);         len = strlen(s);       } else {         scanf( %d , &A);         o++;         a[o].x = A;         a[o].y = len;         a[o].z = o;       }     }     sort(a + 1, a + o + 1, cmp);     dp[0] = 0;     for (i = 1; i <= o; i++) {       if (a[i].y != a[i - 1].y) {         for (j = 1; j < a[i].y; j++) dp[j] = 0;         for (j = a[i].y; j <= 100000; j++)           dp[j] = C(j - 1, a[i].y - 1) * bit[j - a[i].y] % MOD;         for (j = 1; j <= 100000; j++)           dp[j] = (dp[j - 1] + dp[j] * bit2[100000 - j]) % MOD;       }       ans[a[i].z] = dp[a[i].x] * gbit2[100000 - a[i].x] % MOD;     }     for (i = 1; i <= o; i++) printf( %d n , ans[i]);     return 0;   }   