// Latihan bergaya OSN, Bab 14, soal 1 -- pembahasan. // // Setiap suku dihitung dengan pangkat modulo cepat, lalu dijumlahkan // dengan sisa diambil setiap langkah. #include using namespace std; const long long MOD = 1000000007LL; long long pangkat(long long alas, long long eksponen) { long long hasil = 1; alas %= MOD; while (eksponen > 0) { if (eksponen % 2 == 1) hasil = hasil * alas % MOD; alas = alas * alas % MOD; eksponen /= 2; } return hasil; } int main() { long long n, k; cin >> n >> k; long long total = 0; for (long long i = 1; i <= n; i++) { total = (total + pangkat(i, k)) % MOD; } cout << total << "\n"; return 0; }