#include<iostream>
using namespace std;
#define MAX 4001
int nGetPow(int num,int pow);
int main()
{
int num,pow;
while(cin >>num >>pow)
{
nGetPow(num,pow);
}
return 0;
}
int nGetPow(int num,int pow)
{
int i,j,num1,mod;
int shuzu[MAX];
memset(shuzu,0,sizeof(shuzu));
shuzu[0]=1;
num1=0;
for(i=0;i<pow;i++)
{
for(j=0;j<MAX-1;j++)
{
shuzu[j]=num*shuzu[j]+num1;
num1=shuzu[j]/10;
mod=shuzu[j]%10;
shuzu[j]=mod;
}
}
for(i=MAX-1;i>=0;i--)
{
if(shuzu[i]!=0)
break;
}
for(;i>=0;i--)
cout<<shuzu[i];
cout<<endl;
return 0;
}
using namespace std;
#define MAX 4001
int nGetPow(int num,int pow);
int main()
{
int num,pow;
while(cin >>num >>pow)
{
nGetPow(num,pow);
}
return 0;
}
int nGetPow(int num,int pow)
{
int i,j,num1,mod;
int shuzu[MAX];
memset(shuzu,0,sizeof(shuzu));
shuzu[0]=1;
num1=0;
for(i=0;i<pow;i++)
{
for(j=0;j<MAX-1;j++)
{
shuzu[j]=num*shuzu[j]+num1;
num1=shuzu[j]/10;
mod=shuzu[j]%10;
shuzu[j]=mod;
}
}
for(i=MAX-1;i>=0;i--)
{
if(shuzu[i]!=0)
break;
}
for(;i>=0;i--)
cout<<shuzu[i];
cout<<endl;
return 0;
}