#include<stdio.h>
long long int modpow(long long int a, long long int n, long long int p)
{
	long long int res = 1;
	while (n > 0)
	{
		if (n % 2 > 0)
			res = res * a % p;
		a = a * a % p;
		n /= 2;
	}
	return res;
}
int main()
{
	long long int n, k;
	scanf("%lld %lld", &n, &k);
	long long int p = 1000000007;
	long long int cnt[100005];
	long long int i, j;
	for (i = 1; i <= k; i++)
		cnt[i] = modpow(k / i, n, p);
	for (i = k; i > 1; i--)
	{
		cnt[1] = (cnt[1] - cnt[i] + p) % p;
		for (j = 2; j * j <= i; j++)
		{
			if (i % j == 0)
			{
				cnt[j] = (cnt[j] - cnt[i] + p) % p;
				if (j * j < i)
					cnt[i / j] = (cnt[i / j] - cnt[i] + p) % p;
			}
		}
	}
	long long int ans = 0;
	for (i = 1; i <= k; i++)
		ans = (ans + i * cnt[i] % p) % p;
	printf("%lld\n", ans);
	return 0;
}