#include <bits/stdc++.h>
#define rep(i,n)for(long long i=0;i<(n);i++)
using namespace std;
using P=pair<long long,long long>;
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
 
const ll MOD= 1e9+7;
const ll INF=1e18;
const double pi=acos(-1);
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};


ll modpow(ll a, ll n){
    if(n==0)return 1;
    if(n%2==0){
      ll t=modpow(a,n/2);
      return (t*t)%MOD;
    }
    return a*modpow(a,n-1)%MOD;
}
ll modinv(ll k){
  return modpow(k,MOD-2);
}
int main(){
  cin.tie(0);
  ios::sync_with_stdio(false);  
  
  ll n,k;
  cin >> n >> k;
  map<ll,ll>mp;
  
  ll ans=0;
  for(int i=k;i>=1;i--){
    ll cnt=modpow(k/i,n);
    mp[i]=cnt;
    for(int j=2;j*i<=k;j++){
      mp[i]=(mp[i]-mp[i*j]+MOD)%MOD;
    }
    ans+=i*mp[i]%MOD;
  }
  cout << ans << endl;
  
  
  
}
