#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const ll MOD=1000000007;
const double PI=3.14159265358979;
const ll INF= pow(10,18);
typedef pair<ll,ll> P;
typedef vector<ll> vl;
typedef vector<vl> vvl;
#define FOR(i,a,b) for(ll i=a;i<b;i++)
string abc="abcdefghijklmnopqrstuvwxyz";
string ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

ll pow_mod(ll a,ll b){
  if(b==0){
    return 1;
  }
  else if(b%2==1){
    return (a*pow_mod(a,b-1))%MOD;
  }
  else{
    ll t=pow_mod(a,b/2);
    return t*t%MOD;
  }
}

vector<ll> memo(200001,MOD+1);
ll cnt_gcd(ll a,ll k,ll n){
  if(memo[a]!=MOD+1){
    return memo[a];
  }
  ll b=pow_mod((k/a),n);
  ll i=1;
  while(a+a*i<=k){
    b =(b-cnt_gcd(a+a*i,k,n))%MOD;
    i++;
  }
  memo[a]=b%MOD;
  return b%MOD;
}
  
int main() {
  ll n,k;
  cin >> n >> k;
  ll ans=0;
  for(ll i=k;i>=1;i--){
    ans=(ans+i*(cnt_gcd(i,k,n)))%MOD;
  }
  cout << (ans+MOD)%MOD << endl;
}