int64_t modularPower(int64_t b , int64_t e ) {
int64_t MOD = 1e9 + 7;
if ( MOD == 1) return 0; // Handling edge case
int64_t r = 1;
b = b % MOD;
while (e > 0) {
// If exponent is odd, multiply base with result
if ( e % 2 == 1) {
r = (r * b) % MOD;
}
// exponent must be even now
e = e >> 1; // Equivalent to exponent /= 2
b = (b * b) % MOD;
}
return r;
}
const int64_t MOD = 1e9 + 7;
void solve()
{
int64_t N , K ;
cin >> N >> K ;
vector<int64_t> dp(N+1,-1);
function< int64_t (int64_t)> dfs = [&]( int64_t n )
{
if( dp[n] != -1 )
{
return dp[n];
}
if( n == K ) return dp[n] = ( modularPower( 26 , K ) - 26 );
if( n <= K - 1 ) return dp[n] = modularPower( 26 , n);
if( dp[n-1] != -1 && dp[n-K] != -1 )
{
return dp[n] = dp[n-1] + dp[n-K];
}
else
{
return dp[n] = dfs( n-1 ) + dfs( n - K );
}
};
for( int i = 1 ; i < K ; i++ )
{
dp[i] = modularPower( 26 , i );
dp[i] %= MOD ;
}
dp[K] = modularPower( 26 , K ) - 26;
dp[K] %= MOD ;
for( int i = K + 1 ; i <= N ; i++ )
{
dp[i] = (dp[i-1] % MOD + dp[i-K] % MOD) % MOD ;
dp[i] %= MOD ;
}
cout << dp[N] << endl;
cout << dfs( N ) << endl;
}
signed main()
{
fastio;
int t=1;
cin >> t ;
while(t--) solve();
return 0;
}