#include #define llint long long #define mod 1000000007 using namespace std; llint n, k; llint dp[305][305]; llint dp2[305][305]; int main(void) { cin >> n >> k; dp[0][0] = 1; for(int i = 0; i < k; i++){ for(int j = 0; j <= k+1; j++){ dp[i+1][j] += dp[i][j] * (n-1) % mod; dp[i+1][j] %= mod; if(j+1 <= k+1) dp[i+1][j+1] += dp[i][j]; if(j+1 <= k+1) dp[i+1][j+1] %= mod; } } dp2[0][0] = 1; for(int i = 0; i < k; i++){ for(int j = 0; j <= k+1; j++){ if(j==0) dp2[i+1][j] += dp2[i][j] * (n-2) % mod; else dp2[i+1][j] += dp2[i][j] * (n-1) % mod; dp2[i+1][j] %= mod; if(j+1 <= k+1) dp2[i+1][j+1] += dp2[i][j]; if(j+1 <= k+1) dp2[i+1][j+1] %= mod; } } /*for(int i = 0; i <= k; i++){ for(int j = 0; j <= k+1; j++){ cout << dp[i][j] << " "; } cout << endl; }*/ llint ans = 0; for(int i = 1; i <= n; i++){ llint cnt = 0; for(int j = 1; j <= min(k, n-1); j++){ //cout << dp[k][j] << endl; cnt += (dp[k][j] - dp2[k][j+1] + mod) % mod, cnt %= mod; } ans += cnt * i % mod; ans %= mod; } cout << ans << endl; return 0; }