#include <stdio.h>

long long pow_MOD(long long x,long long n,long long MOD){
    x %= MOD;
    if(n == 1) return x;
    return (pow_MOD(x,n-1,MOD)*x)%MOD;
}

int main(){
    long long MOD = 1e9+7;
    int N,K;
    scanf("%d %d",&N,&K);
    long long ans=0;
    long long v[K];
    for(int i = K-1;i>=0;i--) {
        v[i] = pow_MOD(K/(i+1),N,MOD);
        for(int j = 2*(i+1); j <= K;j+=(i+1)) v[i]-=v[j-1];
    }
    for(int i = 0; i<K; i++) ans+=((v[i]*((i+1)%MOD))%MOD);
    printf("%lld\n",ans);
    return 0;
}