#include <bits/stdc++.h>
using namespace std;

// a^n mod を計算する
long long modpow(long long a, long long n, long long mod) {
    long long res = 1;
    while (n > 0) {
        if (n & 1) res = res * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return res;
}

int main() {
#define rep(i, n) for(int i = 1; i <= (int)(n); i++)
  int64_t N,K;
  int64_t answer=0;
  cin>>N>>K;
  vector<int64_t> r(K),s(K);
  rep(i,K){
    r[i]=modpow(K/i, N, 1000000007 );
  }
  //[K/i]のN乗のリスト
  //i番目にiが乗ってる
  //rep(i,K)
    //cout<<r[i]<<endl;
  for(int i=K;i>=1;i--){
    for(int j=2;j<=K;j++){
      if(i*j>K)
        break;
      r[i]-=r[j*i];
    }  
  }
  for(int i=K;i>=1; i--){
    answer+=r[i]*(i)%1000000007;
    answer=answer%1000000007;
  }
  if(answer<0)
    cout<<answer+1000000007;
  else
    cout<<answer;
}