#include<iostream>
using namespace std;
int x;
int fun(int n){
if(n==1)
return x;
return x*fun(n-1);
}
int main(){
int n;
cin>>x>>n;
cout<<fun(n)<<endl;
return 0;
}
#include<iostream>
using namespace std;
int n,m,ans;
void fun(int x,int y){
if(x==n&&y==m){
ans++;
return ;
}
if(x+1<=n) fun(x+1,y);
if(y+1<=m) fun(x,y+1);
}
int main(){
cin>>n>>m;
fun(0,0);
cout<<ans<<endl;
return 0;
}
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
const int INF=0x3f3f3f3f;
int a[4][4]= {{9,7,6,8},{20,26,22,25},{28,36,25,30},{12,4,2,6}};
int mmin[10],mmax[10];
int main(){
int n,m;
n=m=4;
memset(mmin,INF,sizeof(mmin));
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
mmin[i]=min(mmin[i],a[i][j]);
for(int j=0;j<m;j++)
for(int i=0;i<n;i++)
mmax[j]=max(mmax[j],a[i][j]);
bool flag=false;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(mmin[i]==mmax[j]){
printf("(%d,%d):%d",i,j,a[i][j]);
flag=true;
}
if(!flag) cout<<"没有符合条件的点"<<endl;
return 0;
}