#include <fstream>
unsigned long long N, P; // 2 <= N, P <= 2^32
const unsigned long long M = 1999999973;
unsigned long long mod_exp(unsigned long long base,
unsigned long long exponent,
unsigned long long modulus)
{
if (modulus == 1)
{
return 0;
}
else
{
unsigned long long result = 1;
base %= modulus;
while (exponent > 0)
{
if (exponent % 2 != 0)
{
result = (result * base) % modulus;
}
exponent >>= 1;
base = (base * base) % modulus;
}
return result;
}
}
int main()
{
std::ifstream fisierIN("lgput.in");
fisierIN >> N >> P;
fisierIN.close();
std::ofstream fisierOUT("lgput.out");
fisierOUT << mod_exp(N, P, M);
fisierOUT.close();
return 0;
}