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 Haskell (GHC 8.8.3) (judge verdict: Accepted)

import Data.Vector (Vector, (!))
import qualified Data.Vector as U

solve :: Int -> Int -> Mint
solve n k = sum $ U.map (uncurry(*)) idp where
  idp = U.zip dp $ U.enumFromTo 1 (Mint k)
  dp = U.constructrN k f
  f dp = Mint(div k i) ^ n - sum mul where
    i = k - U.length dp
    mul = [dp!(i*m-1) | m <- [1..U.length dp `div` i]]

main = do
  [n,k] <- map read.words <$> getLine
  print $ solve n k

modulus = 10^9 + 7
newtype Mint = Mint Int
instance Num Mint where
  (Mint a) + (Mint b) = Mint $ mod (a+b) modulus
  (Mint a) * (Mint b) = Mint $ mod (a*b) modulus
  abs = id
  signum = id
  fromInteger a = Mint $ mod (fromInteger a) modulus
  negate (Mint a) = Mint $ mod (-a) modulus
instance Enum Mint where
  fromEnum (Mint a) = a
  toEnum a = Mint a
instance Show Mint where
  show (Mint a) = show a