For this Question: Let's assume some functional definitions for this problem.
We take prime(x) as the set of all prime divisors of x. For example, prime(140)={2,5,7}, prime(169)={13}.

Let f(x,p) be the maximum possible integer p**k where k is an integer such that x is divisible by p**k.
(Here a**b means a raised to the power b or pow(a, b)) 
For example:
f(99,3)=9 (99 is divisible by 3**2=9 but not divisible by 3**3=27),
f(63,7)=7 (63 is divisible by 7**1=7 but not divisible by 7**2=49).

Let g(x,y) be the product of f(y,p) for all p in prime(x). 
For example:
g(30,70)=f(70,2)*f(70,3)*f(70,5)=2*1*5=10,
g(525,63)=f(63,3)*f(63,5)*f(63,7)=9*1*7=63.

You are given two integers x and n. Calculate g(x,1)*g(x,2)*…*g(x,n) mod (1000000007).

(Read modulo exponentiation before attempting this problem)The only line contains integers x and n — the numbers used in formula.

Constraints
2 ≤ x ≤ 1000000000
1 ≤ n ≤ 1000000000000000000Print the answer corresponding to the input.Sample Input 1
10 2

Sample Output 1
2

Sample Input 2
20190929 1605

Sample Output 2
363165664

Explanation
In the first example, g(10,1)=f(1,2)⋅f(1,5)=1, g(10,2)=f(2,2)⋅f(2,5)=2., I have written this Solution Code: import math

mod = 1000000007

def modExpo(x, n):
	if n <= 0:
		return 1
	if n % 2 == 0:
		return modExpo((x * x) % mod, n // 2)
	return (x * modExpo((x * x) % mod, (n - 1) // 2)) % mod


def calc(n, p):
	prod = 1
	pPow = 1
	
	while pPow <= (n // p):
		pPow *= p
	
	add = 0
	while pPow != 1:
		quo = n // pPow
		quo -= add

		power = modExpo(pPow, quo)
		prod = (prod * power) % mod

		add += quo
		pPow //= p
	
	return prod


x, n = map(int, input().split())

res = 1
i = 2
while (i * i) <= x:
	if x % i == 0:
		res = (res * calc(n, i)) % mod

		while x % i == 0:
			x //= i
	i += 1

if x > 1:
	res = (res * calc(n, x)) % mod

print(res), In this Programming Language: Python, Now tell me if this Code is compilable or not?