#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long pot(long long x, long long p) {
  if (p == 0) return 1;
  if (p % 2 == 0) {
    x = pot(x, p / 2);
    return (x * x) % mod;
  }
  return (x * pot(x, p - 1)) % mod;
}
long long inv(long long x) { return pot(x, mod - 2); }
vector<pair<int, int> > qs[101010];
int v[101010];
long long ke[202020];
long long ike[202020];
long long po[202020];
long long ncr(long long n, long long k) {
  return (ke[n] * ((ike[k] * ike[n - k]) % mod)) % mod;
}
void go(int x) {
  sort(qs[x].begin(), qs[x].end());
  int i2 = 0;
  while (i2 < (int)qs[x].size() && qs[x][i2].first < x) {
    v[qs[x][i2].second] = 0;
    i2++;
  }
  long long vv = 1;
  long long su = 1;
  for (long long i = x; i2 < (int)qs[x].size(); i++) {
    while (i2 < (int)qs[x].size() && qs[x][i2].first == i) {
      v[qs[x][i2].second] = su;
      i2++;
    }
    vv = su + ncr(i, x - 1) * po[i - x + 1];
    vv %= mod;
    su *= 25;
    su += vv;
    su %= mod;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ke[0] = 1;
  ike[0] = 1;
  po[0] = 1;
  for (int i = 1; i <= 200000; i++) {
    ke[i] = ke[i - 1] * (long long)i;
    ke[i] %= mod;
    ike[i] = inv(ke[i]);
    po[i] = po[i - 1] * 25;
    po[i] %= mod;
  }
  int m;
  cin >> m;
  string s;
  cin >> s;
  int le = s.size();
  int vi = 0;
  for (int i = 0; i < m; i++) {
    int t;
    cin >> t;
    if (t == 1) {
      cin >> s;
      le = s.size();
    } else {
      int n;
      cin >> n;
      qs[le].push_back({n, vi++});
    }
  }
  for (int i = 0; i <= 100000; i++) {
    if ((int)qs[i].size() > 0) {
      go(i);
    }
  }
  for (int i = 0; i < vi; i++) {
    cout << v[i] << '\n';
  }
}
