#include<bits/stdc++.h>
using namespace std;
long long divnum = 1E9+7;
long long mypow(int x, int n){
    long long ret=1,p;
    int l=1,p2=1;
    p=x;
    while(1){
        p%=divnum;
        ret%=divnum;
        if(n&p2) ret*=p;
        p*=p;
        p2<<=1;
        if(p2>n) break;
    }
    return ret%divnum;
}
int main(){
    int N,K;
    cin >> N >> K;
    long long ans=0;
    long long a[K]={0};
    long long p;
    for(int i=K; i>0; i--){
        p=1;
        p=mypow(K/i,N);
        for(int j=2; j<=(K/i); j++){
            p-=a[i*j-1];
            p%=divnum;
        }
        a[i-1]=p;
    }
    for(int i=0; i<K; i++){
        ans+=a[i]*(i+1);
        ans%=divnum;
    }
    cout << ans;
    return 0;
}