#include <stdio.h>
#define modn 1000000007

long long int mypow(long long int a, long long int n){ // a^n
  long long int ans = 1;
  for(int i=0; i<n; i++)
    ans = ans * a % modn;
  return ans;
}

long long int modpow(long long int a, long long int b, long long int c){
  long long re = 1;
  while(b >= 1){
    if(b & 1) re = re * a % c;
    a = a * a % c;
    b = b >> 1;
  }
  return re;
}

int main(){
  long long int n, k;  scanf("%lld%lld", &n, &k);

  long long int gcdn[100001]; // 1~k

  long long int ans = 0;
  
  for(long long int i=k; i>=1; i--){
    //gcdn[i] = mypow(k/i, n);
    gcdn[i] = modpow((k/i), n, modn);
    for(long long int j=2; i*j<=k; j++)
      gcdn[i] -= gcdn[i*j];
    ans = ans + gcdn[i]*i%modn;
  }

  printf("%lld\n", ans%modn);
  return 0;
}
