m, n = gets.split.map(&:to_i)
mod = 1_000_000_007

def pow(m, n, mod)
  return 1 if n == 0
  res = pow(((m * m) % mod), (n / 2), mod)
  if n.odd?
    res = res * m % mod
  end
  res
end

puts pow(m, n, mod)
