//la_flame_ never dies out.
#include <cassert>
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef long double LD;
const int MAX = 1e5 + 5;
const int MOD = 1e9 + 7;
const LD EPS = 1e-10;
const LD PI = acos(-1.0);
#define fastio \
ios_base::sync_with_stdio(false); \
cin.tie(NULL); \
cout.tie(NULL);
#define rep(i, a, b, d) for (int i = a; i <= b; i += d)
#define brep(i, a, b, d) for (int i = a; i >= b; i -= d)
#define pb push_back
#define pii pair<int, int>
#define ll long long
#define bara 1000000000000000000
int modpow(int x, unsigned int y, int p)
{
int res = 1; // Initialize result
x = x % p; // Update x if it is more than or
// equal to p
while (y > 0)
{
// If y is odd, multiply x with result
if (y & 1)
res = (res*x) % p;
// y must be even now
y = y>>1; // y = y/2
x = (x*x) % p;
}
return res;
}
int32_t main()
{
int tc; cin>>tc;
assert(tc >= 1 and tc <= 50);
vector <int> ans;
while(tc--){
int n; string s;
cin>>n>>s;
int l = s.length();
assert(n >= 1 and n <= bara);
assert(l >= 1 and tc <= 100000);
if(n <= l) {ans.pb(0); continue;}
int res = (modpow(26ll, n - l, MOD)%MOD + (25ll * (l * modpow(26ll, n - l - 1, MOD))%MOD)%MOD)%MOD;
ans.pb(res);
}
// cout<<"*********************"<<endl;
for(auto z : ans) cout<<z<<endl;
return 0;
}
Ly9sYV9mbGFtZV8gbmV2ZXIgZGllcyBvdXQuCiNpbmNsdWRlIDxjYXNzZXJ0PiAKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKI2RlZmluZSBpbnQgbG9uZyBsb25nCnR5cGVkZWYgbG9uZyBkb3VibGUgTEQ7CiAKY29uc3QgaW50IE1BWCA9IDFlNSArIDU7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3Owpjb25zdCBMRCBFUFMgPSAxZS0xMDsKY29uc3QgTEQgUEkgPSBhY29zKC0xLjApOwojZGVmaW5lIGZhc3RpbyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBcCiAgICBjaW4udGllKE5VTEwpOyAgICAgICAgICAgICAgICAgICAgXAogICAgY291dC50aWUoTlVMTCk7CiNkZWZpbmUgcmVwKGksIGEsIGIsIGQpIGZvciAoaW50IGkgPSBhOyBpIDw9IGI7IGkgKz0gZCkKI2RlZmluZSBicmVwKGksIGEsIGIsIGQpIGZvciAoaW50IGkgPSBhOyBpID49IGI7IGkgLT0gZCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBiYXJhIDEwMDAwMDAwMDAwMDAwMDAwMDAKCmludCBtb2Rwb3coaW50IHgsIHVuc2lnbmVkIGludCB5LCBpbnQgcCkgCnsgCiAgICBpbnQgcmVzID0gMTsgICAgICAvLyBJbml0aWFsaXplIHJlc3VsdCAKICAKICAgIHggPSB4ICUgcDsgIC8vIFVwZGF0ZSB4IGlmIGl0IGlzIG1vcmUgdGhhbiBvciAgCiAgICAgICAgICAgICAgICAvLyBlcXVhbCB0byBwIAogIAogICAgd2hpbGUgKHkgPiAwKSAKICAgIHsgCiAgICAgICAgLy8gSWYgeSBpcyBvZGQsIG11bHRpcGx5IHggd2l0aCByZXN1bHQgCiAgICAgICAgaWYgKHkgJiAxKSAKICAgICAgICAgICAgcmVzID0gKHJlcyp4KSAlIHA7IAogIAogICAgICAgIC8vIHkgbXVzdCBiZSBldmVuIG5vdyAKICAgICAgICB5ID0geT4+MTsgLy8geSA9IHkvMiAKICAgICAgICB4ID0gKHgqeCkgJSBwOyAgIAogICAgfSAKICAgIHJldHVybiByZXM7IAp9IAogCmludDMyX3QgbWFpbigpCnsKICAgIGludCB0YzsgY2luPj50YzsKICAgIGFzc2VydCh0YyA+PSAxIGFuZCB0YyA8PSA1MCk7CiAgICB2ZWN0b3IgPGludD4gYW5zOwogICAgd2hpbGUodGMtLSl7CiAgICAgICAgaW50IG47IHN0cmluZyBzOwogICAgICAgIGNpbj4+bj4+czsKICAgICAgICBpbnQgbCA9IHMubGVuZ3RoKCk7CiAgICAgICAgYXNzZXJ0KG4gPj0gMSBhbmQgbiA8PSBiYXJhKTsKICAgICAgICBhc3NlcnQobCA+PSAxIGFuZCB0YyA8PSAxMDAwMDApOwogICAgICAgIGlmKG4gPD0gbCkge2Fucy5wYigwKTsgY29udGludWU7fQogICAgICAgIGludCByZXMgPSAobW9kcG93KDI2bGwsIG4gLSBsLCBNT0QpJU1PRCArICgyNWxsICogKGwgKiBtb2Rwb3coMjZsbCwgbiAtIGwgLSAxLCBNT0QpKSVNT0QpJU1PRCklTU9EOwogICAgICAgIGFucy5wYihyZXMpOwogICAgfQogICAvLyBjb3V0PDwiKioqKioqKioqKioqKioqKioqKioqIjw8ZW5kbDsKICAgIGZvcihhdXRvIHogOiBhbnMpIGNvdXQ8PHo8PGVuZGw7CiAgICByZXR1cm4gMDsKfSA=