#include<bits/stdc++.h>
using namespace std;
const int N=2e6+5,mod=1e9+7;
typedef long long ll;
char s[N];
int n,k;
ll f[N],invf[N];
ll C(ll n,ll m)
{
    return f[n]*invf[n-m]%mod*invf[m]%mod;
}
#define pb push_back
typedef long long ll;
typedef vector<ll>vi;
typedef pair<ll,ll>pi;
ll qpow(ll a,ll n)
{
    ll ans=1;
    while(n)
    {
        if(n&1) ans=ans*a%mod;
        a=a*a%mod;
        n>>=1;
    }
    return ans;
}
namespace seq
{
    const int N=1e4+10;
    ll res[N],base[N],c[N],md[N];
    vi v;
    void mul(ll *a,ll *b,long long k)
    {
        for(int i=0;i<k+k;i++) c[i]=0;
        for(ll i=0;i<k;i++)
            if(a[i])
            for(ll j=0;j<k;j++)
            c[i+j]=(c[i+j]+a[i]*b[j])%mod;
        for(ll i=k+k-1;i>=k;i--)
            if(c[i])
            for(int j=0;j<v.size();j++)
            c[i-k+v[j]]=(c[i-k+v[j]]-c[i]*md[v[j]])%mod;
        for(int i=0;i<k;i++) a[i]=c[i];
    }
    ll solve(ll n,vi a,vi b)
    {
        // a系数 b初值 b[n+1]=a[0]*b[n]+...
        //for(int i=0;i<a.size();i++)
        //    printf(i==a.size()-1?"%lld\n":"%lld ",a[i]);a是最短递推式
        ll ans=0,len=0;
        ll k=a.size();
        for(int i=0;i<k;i++) md[k-1-i]=-a[i];md[k]=1;
        v.clear();
        for(int i=0;i<k;i++)
            if(md[i]!=0) v.push_back(i);
        for(int i=0;i<k;i++) res[i]=base[i]=0;
        res[0]=1;
        while((1ll<<len)<=n) len++;
        for(ll p=len;p>=0;p--)
        {
            mul(res,res,k);
            if((n>>p)&1)
            {
                for(ll i=k-1;i>=0;i--) res[i+1]=res[i];res[0]=0;
                for(int j=0;j<v.size();j++) res[v[j]]=(res[v[j]]-res[k]*md[v[j]])%mod;
            }
        }
        for(int i=0;i<k;i++) ans=(ans+res[i]*b[i])%mod;
        return (ans%mod+mod)%mod;
    }
    vi BM(vi s)
    {
        vi ans(1,1),res(1,1);
        ll l=0,m=1,b=0;
        for(int n=0;n<s.size();n++)
        {
            ll d=0;
            for(int i=0;i<=l;i++) d=(d+(ll)ans[i]*s[n-i])%mod;
            if(d==0) m++;
            else if(2*l<=n)
            {
                vi t=ans;
                ll c=mod-d*qpow(b,mod-2)%mod;
                while(ans.size()<res.size()+m) ans.pb(0);
                for(int i=0;i<res.size();i++)
                ans[i+m]=(ans[i+m]+c*res[i])%mod;
                l=n+1-l;res=t;b=d;m=1;
            }
            else
            {
                ll c=mod-d*qpow(b,mod-2)%mod;
                while(ans.size()<res.size()+m) res.pb(0);
                for(int i=0;i<res.size();i++)
                    ans[i+m]=(ans[i+m]+c*res[i])%mod;
                m++;
            }
        }
        return ans;
    }
    ll getans(vi a,ll n)
    {
        vi c=BM(a);
        c.erase(c.begin());
        for(int i=0;i<c.size();i++) c[i]=(mod-c[i])%mod;
        return solve(n,c,vi(a.begin(),a.begin()+c.size()));
    }
};
int main()
{
    f[0]=f[1]=invf[0]=invf[1]=1;
    for(int i=2;i<N;i++) f[i]=f[i-1]*i%mod,invf[i]=(mod-mod/i)*invf[mod%i]%mod;
    for(int i=2;i<N;i++) invf[i]=invf[i-1]*invf[i]%mod;
    scanf("%d",&k);scanf("%s",s+1);
    n=strlen(s+1);
    ll ans=0;
    for(int i=0;i<=k;i++)
        ans=(ans+qpow(26,i)*qpow(25,k-i)%mod*C(n+k-i-1,n-1))%mod;
    printf("%lld\n",ans);
}


Measured memory_bytes: 36016