#include<map>
#include<list>
#include<queue>
#include<stack>
#include<string>
#include<math.h>
#include<time.h>
#include<vector>
#include<bitset>
#include<memory>
#include<utility>
#include<stdio.h>
#include<sstream>
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<algorithm> //一大堆头文件
#define LL unsigned long long
using namespace std;
long long a[10];//1024是2^10,1000<1024,所以0~9够了
long long f[1010];//long long 防炸
int main()
{
long long k,n;
cin>>k>>n;
int i,j;
a[0]=1;//求出k^0~k^9
int s=1;
for (i=1;i<=9;i++)
a[i]=a[i-1]*k;//这样推比用pow要快些吧。
for (i=0;i<=9;i++)//分成九段去枚举 a[i]表示第i段的开头的值
{
f[s]=a[i];//找规律可得第i组的第一个是k^i
for (j=1;j<=s;j++)
f[s+j]=f[s]+f[j];//开始找规律得到的,f[i]=f[这一段的第一个的位置]+f[i-这一段的第一个的位置]
s*=2;// s表示2^i 相当于pow(2,i);
if (f[n]!=0)//如果f[n]求出来了
{
printf("%d",f[n]); //用%d才能a,不然就要打标
return 0;//节约时间
}
}
return 0;
}