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

const int64_t MOD=1e9+7;

int64_t modpow(int64_t a,int64_t n){
  int64_t res=1;
  if(n==0) return res;
  while(n>0){
    if(n&1) res=(res*a)%MOD;
    a=(a*a)%MOD;
    n >>= 1;
  }
  return res;
}

int main(){
  int64_t N,K;
  cin>>N>>K;
  int64_t ans=0;

  
  //i|gcdなるような総数mod[i]
  vector<int64_t> mod(K+1,0);
  for(int i=1;i<=K;++i){
    mod[i]=modpow(K/i,N);
  }
  
  //i==gcdなるような総数dp[i]
  vector<int64_t> dp(K+1,0);
  for(int64_t i=K;i>=1;--i){
    dp[i]=mod[i];
    for(int64_t j=2;i*j<=K;++j){
      dp[i] += MOD-dp[i*j];
    }
    dp[i] %= MOD;
    ans += i*dp[i];
    ans %= MOD;
  }

  cout<<ans<<endl;
}