/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
명령의 묶음
#include <stdio.h>
//함수원형
// 리턴타입 함수이름 (매개변수)
int my_sum(int a, int b)
{
return a+b;
}
int main()
{
//int c = my_sum(10,7);
printf("%d",my_sum(10,7));
return 0;
}
*/
/*char printchar='/'; //전역변수
void star(int a)
{
int i;
for(i=1;i<=a;i++)
{
printf("%c",printchar);
}
return ;
}
int main()
{
int n, i; //지역변수
scanf("%d",&n);
star(n);
return 0;
}
*/
/*
#include <stdio.h>
char f()
{
return 'A';
}
int main()
{
printf("%c", f() );
return 0;
}
*/
/*
#include <stdio.h>
void f()
{
printf("%d",123);
}
int main()
{
f();
return 0;
}
*/
/*
#include <stdio.h>
int n;
void f(n)
{
if(n==1)
{
printf("hello");
}
else if(n==2)
{
printf("world");
}
}
int main()
{
scanf("%d", &n);
f(n);
return 0;
}
*/
/*
#include <stdio.h>
int n;
char grade(int n)
{
if(n>=90)
{
return 'A';
}
else if(n>=80)
{
return 'B';
}
else if(n>=70)
{
return 'C';
}
else if(n>=60)
{
return 'D';
}
else if(60>n)
{
return 'F';
}
}
int main()
{
scanf("%d", &n);
printf("%c", grade(n));
return 0;
}
*/
/*
#include <stdio.h>
int n;
long long f(int n)
{
long long int e=0;
for(int i=1;i<=n;i++)
{
e+=i;
}
return e;
}
int main()
{
scanf("%d", &n);
printf("%lld\n", f(n));
}
*/
/*
#include <stdio.h>
long long int n, m;
long long int f(long long int n,long long int m)
{
if(n>m)
return n-m;
else if(m>n||m==n)
return m-n;
}
int main()
{
scanf("%lld%lld", &n, &m);
printf("%lld\n", f(n, m));
}
*/
/*
#include <stdio.h>
int n, k, d[1010];
int upper_bound (int k)
{
for(int i=1;i<=n;i++)
{
if(d[i]>k)
{
return i;
}
}
return n+1;
}
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &d[i]);
scanf("%d", &k);
printf("%d\n", upper_bound(k));
}
*/
#include <stdio.h>
int a, n;
long long pow(int a,int n)
{
long long b;
b=a;
for(int i=1;i<=n;i++)
{
b = b*a;
}
return b/2;
}
int main()
{
scanf("%d%d", &a, &n);
printf("%lld\n", pow(a, n));
}



