#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vec;
typedef vector<vec> mat;
typedef pair<ll,ll> pll;
const ll mod=1e9+7;
//const ll mod=998244353;
const ll inf=5e18;

ll n,k;
vec cnt(1e5+10,-1);
vec ans(1e5+10,-1);

ll mpow(ll x, ll n) {
  ll ans=1;
  while(n>0) {
    if(n&1) {
      ans=ans*x%mod;
    }
    x=x*x%mod;
    n>>=1;
  }
  return ans;
}

ll dfs(ll t) {
  if(cnt[t]>0) return cnt[t];
  cnt[t]=mpow(k/t,n);
  ans[t]=0;
  for(ll i=2;i*t<=k;i++) {
    (cnt[t]+=mod-dfs(i*t))%mod;
  }
  ans[t]=cnt[t]*t%mod;
  return cnt[t];
}

int main() {
  cin >> n >> k;
  ll sum=0;
  dfs(1);
  for(ll i=1;i<=k;i++) {
    (sum+=ans[i])%=mod;
  }
  cout << sum << endl;
}