Problem:
Score : 500 points

Problem Statement

Consider sequences \{A_1,...,A_N\} of length N consisting of integers between 1 and K (inclusive).

There are K^N such sequences. Find the sum of \gcd(A_1, ..., A_N) over all of them.

Since this sum can be enormous, print the value modulo (10^9+7).

Here \gcd(A_1, ..., A_N) denotes the greatest common divisor of A_1, ..., A_N.

Constraints

2 \leq N \leq 10^5

1 \leq K \leq 10^5

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K

Output

Print the sum of \gcd(A_1, ..., A_N) over all K^N sequences, modulo (10^9+7).

Sample Input 1

3 2

Sample Output 1

9

\gcd(1,1,1)+\gcd(1,1,2)+\gcd(1,2,1)+\gcd(1,2,2)
+\gcd(2,1,1)+\gcd(2,1,2)+\gcd(2,2,1)+\gcd(2,2,2)
=1+1+1+1+1+1+1+2=9

Thus, the answer is 9.

Sample Input 2

3 200

Sample Output 2

10813692

Sample Input 3

100000 100000

Sample Output 3

742202979

Be sure to print the sum modulo (10^9+7).

Solution in Fortran (GNU Fortran 9.2.1) (judge verdict: Accepted)

program name
    use,intrinsic :: iso_fortran_env
    implicit none
    integer(int64):: n,k,i,j,ans
    integer(int64), allocatable:: gcn(:)
    integer(int64),parameter:: md = 1000000007

    read*, n,k
    allocate(gcn(k))

    do i=1,k
        gcn(i) = calc_rj(k/i, n)
    end do

    do i=k,1,-1
        j=2
        do while(i*j <= k)
            gcn(i) = gcn(i) - gcn(i*j)
            j=j+1
        end do
    end do

    ans=0
    do i=1,k
        ans=mod(ans+gcn(i)*i,md)
    end do

    print*, ans

contains
    function calc_rj(x,y) result(ret)
        integer(int64):: x,y,ret
        integer(int64):: num, nx
        ret = 1
        num = y
        nx = x
        do while(num > 0)
            if (btest(num,0)) then
                ret=mod(ret*nx,md)
            end if
            nx=mod(nx*nx,md)
            num=rshift(num,1)
        end do
    end function
end program name