#include <bits/stdc++.h>
using namespace std;
template <class T>
bool cmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool cmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
const int mod = 1e9 + 7;
void madd(int& a, int b) {
  a += b;
  if (a >= mod) a -= mod;
}
int mul(int a, int b) { return (1LL * a * b) % mod; }
int mpow(int a, int n) {
  int r = 1;
  while (n > 0) {
    if (n & 1) r = mul(r, a);
    a = mul(a, a);
    n >>= 1;
  }
  return r;
}
int minv(int x) { return mpow(x, mod - 2); }
const int N = 1e5 + 10;
int fac[N], inv[N];
int choose(int n, int k) {
  return n < k ? 0 : mul(fac[n], mul(inv[n - k], inv[k]));
}
void init_bino() {
  fac[0] = inv[0] = 1;
  for (int i = 1; i < N; i++) {
    fac[i] = mul(i, fac[i - 1]);
    inv[i] = minv(fac[i]);
  }
}
int Q;
char buf[N];
int qans[N];
vector<pair<int, int> > qu[N];
int f[N];
int sigM1[N];
int sig[N];
int main() {
  sig[0] = sigM1[0] = 1;
  for (int i = 1; i < N; i++) {
    sigM1[i] = mul(25, sigM1[i - 1]);
    sig[i] = mul(minv(26), sig[i - 1]);
  }
  init_bino();
  scanf("%d", &Q);
  memset(qans, -1, sizeof qans);
  int cur = 0;
  for (int i = 0; i <= Q; i++) {
    int qt, qv;
    if (i == 0) {
      qt = 1;
    } else {
      scanf("%d", &qt);
    }
    if (qt == 1) {
      scanf("%s", buf);
      cur = strlen(buf);
    } else {
      scanf("%d", &qv);
      qu[cur].push_back({i, qv});
    }
  }
  for (int i = 0; i < N; i++) {
    if (qu[i].empty()) {
      continue;
    }
    memset(f, 0, sizeof f);
    for (int k = i; k < N; k++) {
      f[k] = f[k - 1];
      madd(f[k], mul(choose(k - 1, i - 1), mul(sigM1[k - i], sig[k])));
    }
    for (pair<int, int> p : qu[i]) {
      qans[p.first] = mul(mpow(26, p.second), f[p.second]);
    }
  }
  for (int i = 0; i <= Q; i++) {
    if (qans[i] != -1) {
      printf("%d\n", qans[i]);
    }
  }
  return 0;
}
