#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#define MOD 1999999973
uint64_t power(uint64_t base,uint64_t exp)
{
uint64_t res=1;
base%=MOD;
while(exp>0)
{
if(exp%2)
{
res=(res*base)%MOD;
}
base=(base*base)%MOD;
exp/=2;
}
return res;
}
int main(void)
{
FILE *fin=fopen("lgput.in","r");
FILE *fout=fopen("lgput.out","w");
if(fin==NULL || fout==NULL)
{
fprintf(stderr,"eroare la deschiderea fisierelor");
exit(EXIT_FAILURE);
}
uint64_t N,P;
if((fscanf(fin,"%lu %lu",&N,&P))!=2)
{
fprintf(stderr,"eroare la citirea din fisier");
exit(EXIT_FAILURE);
}
uint64_t rez=power(N,P);
fprintf(fout,"%lu\n",rez);
if((fclose(fin))!=0)
{
fprintf(stderr,"eroare la inchiderea fisierului de citire");
exit(EXIT_FAILURE);
}
if((fclose(fout))!=0)
{
fprintf(stderr,"eroare la inchiderea fisierului de scriere");
exit(EXIT_FAILURE);
}
return 0;
}