#include <stdio.h>

long long int mod(long long int n){
  return n%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 = mod(ans*a);
  return ans;
}

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);
    for(long long int j=2; i*j<=k; j++)
      gcdn[i] -= gcdn[i*j];
    ans = ans + mod(gcdn[i]*i);
    ans = mod(ans);
  }

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