#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
string multipication(string x, string y);
string addition(string x4, string y4);
int m1;
string dp[20][155];
int main()
{
int n, m,i,x,p,lol,j;
string y,z,lk,z1;
char c;
string sum;
for (i = 0; i <= 16; i++)
{
for (j = 0; j <= 151; j++)
{
dp[i][j] = "@";
}
}
while (cin >> n >> m)
{
y = "1";
x = m;
z = "";
while (x)
{
p = (x % 10);
c = (p + '0');
z = z + c;
x = x / 10;
}
reverse(z.begin(), z.end());
sum = "0";
for (i = 1; i <= n; i++)
{
y = multipication(z, y);
lol = i;
z1 = "";
while (lol)
{
p = (lol % 10);
c = (p + '0');
z1 = z1 + c;
lol = lol / 10;
}
reverse(z1.begin(), z1.end());
lk = multipication(z1, y);
if (dp[m][i] == "@")
{
sum = addition(sum, lk);
dp[m][i] = sum;
}
else
{
sum = dp[m][i];
}
}
cout << sum << "\n";
}
}
string multipication(string x, string y)
{
string z, m1, pa, pa1, ka;
int i, j, m, p, check;
char c;
if (x.size() > y.size())
swap(x, y);
pa = "";
m1 = "";
check = 0;
for (i = x.size() - 1; i >= 0; i--)
{
z = "", p = 0;
for (j = y.size() - 1; j >= 0; j--)
{
m = (y[j] - '0')*(x[i] - '0') + p;
p = 0;
p = (m / 10);
c = (m % 10) + '0';
z = z + c;
}
if (m >= 10)
{
c = ((m / 10) + '0');
z = z + c;
}
reverse(z.begin(), z.end());
z = z + m1;
m1 = m1 + '0';
pa = addition(pa, z);
}
int ma = 0;
for (i = 0; i < pa.size(); i++)
{
if (pa[i] != '0')
ma = 1;
if (ma == 1)
{
ka = ka + pa[i];
}
}
return ka;
}
string addition(string x4, string y4)
{
string z, z1;
z = "";
z1 = "";
long long i, sum, p;
char c;
if (y4.size()<x4.size())
{
for (i = 0; i<(x4.size() - y4.size()); i++)
{
z = z + '0';
}
z = z + y4;
y4 = z;
}
else if (x4.size()<y4.size())
{
for (i = 0; i<(y4.size() - x4.size()); i++)
{
z = z + '0';
}
z = z + x4;
x4 = z;
}
p = 0;
for (i = x4.size() - 1; i >= 0; i--)
{
sum = p + (x4[i] - '0') + (y4[i] - '0');
p = 0;
if (sum >= 10)
p = 1;
c = ((sum % 10) + '0');
z1 = z1 + c;
}
if (sum >= 10)
z1 = z1 + "1";
reverse(z1.begin(), z1.end());
return z1;
}
CgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJpbmcgbXVsdGlwaWNhdGlvbihzdHJpbmcgeCwgc3RyaW5nIHkpOwpzdHJpbmcgYWRkaXRpb24oc3RyaW5nIHg0LCBzdHJpbmcgeTQpOwppbnQgbTE7CnN0cmluZyBkcFsyMF1bMTU1XTsKaW50IG1haW4oKQp7CglpbnQgbiwgbSxpLHgscCxsb2wsajsKCXN0cmluZyB5LHosbGssejE7CgljaGFyIGM7CglzdHJpbmcgc3VtOwoJZm9yIChpID0gMDsgaSA8PSAxNjsgaSsrKQoJewoJCWZvciAoaiA9IDA7IGogPD0gMTUxOyBqKyspCgkJewoJCQlkcFtpXVtqXSA9ICJAIjsKCQl9Cgl9Cgl3aGlsZSAoY2luID4+IG4gPj4gbSkKCXsKCQl5ID0gIjEiOwoJCXggPSBtOwoJCXogPSAiIjsKCQl3aGlsZSAoeCkKCQl7CgkJCXAgPSAoeCAlIDEwKTsKCQkJYyA9IChwICsgJzAnKTsKCQkJeiA9IHogKyBjOwoJCQl4ID0geCAvIDEwOwoJCX0KCQlyZXZlcnNlKHouYmVnaW4oKSwgei5lbmQoKSk7CgkJc3VtID0gIjAiOwoJCWZvciAoaSA9IDE7IGkgPD0gbjsgaSsrKQoJCXsKCQkJeSA9IG11bHRpcGljYXRpb24oeiwgeSk7CgkJCWxvbCA9IGk7CgkJCXoxID0gIiI7CgkJCXdoaWxlIChsb2wpCgkJCXsKCQkJCXAgPSAobG9sICUgMTApOwoJCQkJYyA9IChwICsgJzAnKTsKCQkJCXoxID0gejEgKyBjOwoJCQkJbG9sID0gbG9sIC8gMTA7CgkJCX0KCQkJcmV2ZXJzZSh6MS5iZWdpbigpLCB6MS5lbmQoKSk7CgkJCWxrID0gbXVsdGlwaWNhdGlvbih6MSwgeSk7CgkJCWlmIChkcFttXVtpXSA9PSAiQCIpCgkJCXsKCQkJCXN1bSA9IGFkZGl0aW9uKHN1bSwgbGspOwoJCQkJZHBbbV1baV0gPSBzdW07CgkJCQkgCgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkgCgkJCQlzdW0gPSBkcFttXVtpXTsKCQkJfQoKCQl9CgkJY291dCA8PCBzdW0gPDwgIlxuIjsKCX0KfQpzdHJpbmcgbXVsdGlwaWNhdGlvbihzdHJpbmcgeCwgc3RyaW5nIHkpCnsKCXN0cmluZyAgeiwgbTEsIHBhLCBwYTEsIGthOwoJaW50IGksIGosIG0sIHAsIGNoZWNrOwoJY2hhciBjOwoJaWYgKHguc2l6ZSgpID4geS5zaXplKCkpCgkJc3dhcCh4LCB5KTsKCXBhID0gIiI7CgltMSA9ICIiOwoJY2hlY2sgPSAwOwoJZm9yIChpID0geC5zaXplKCkgLSAxOyBpID49IDA7IGktLSkKCXsKCQl6ID0gIiIsIHAgPSAwOwoJCWZvciAoaiA9IHkuc2l6ZSgpIC0gMTsgaiA+PSAwOyBqLS0pCgkJewoJCQltID0gKHlbal0gLSAnMCcpKih4W2ldIC0gJzAnKSArIHA7CgkJCXAgPSAwOwoJCQlwID0gKG0gLyAxMCk7CgoJCQljID0gKG0gJSAxMCkgKyAnMCc7CgkJCXogPSB6ICsgYzsKCQl9CgoJCWlmIChtID49IDEwKQoJCXsKCQkJYyA9ICgobSAvIDEwKSArICcwJyk7CgkJCXogPSB6ICsgYzsKCQl9CgoJCXJldmVyc2Uoei5iZWdpbigpLCB6LmVuZCgpKTsKCQl6ID0geiArIG0xOwoJCW0xID0gbTEgKyAnMCc7CgkJcGEgPSBhZGRpdGlvbihwYSwgeik7CgoJfQoJaW50ICBtYSA9IDA7Cglmb3IgKGkgPSAwOyBpIDwgcGEuc2l6ZSgpOyBpKyspCgl7CgkJaWYgKHBhW2ldICE9ICcwJykKCQkJbWEgPSAxOwoJCWlmIChtYSA9PSAxKQoJCXsKCQkJa2EgPSBrYSArIHBhW2ldOwoJCX0KCX0KCXJldHVybiBrYTsKfQoKc3RyaW5nIGFkZGl0aW9uKHN0cmluZyB4NCwgc3RyaW5nIHk0KQp7CglzdHJpbmcgeiwgejE7Cgl6ID0gIiI7Cgl6MSA9ICIiOwoJbG9uZyBsb25nIGksIHN1bSwgcDsKCWNoYXIgYzsKCWlmICh5NC5zaXplKCk8eDQuc2l6ZSgpKQoJewoJCWZvciAoaSA9IDA7IGk8KHg0LnNpemUoKSAtIHk0LnNpemUoKSk7IGkrKykKCQl7CgkJCXogPSB6ICsgJzAnOwoJCX0KCQl6ID0geiArIHk0OwoJCXk0ID0gejsKCX0KCWVsc2UgaWYgKHg0LnNpemUoKTx5NC5zaXplKCkpCgl7CgkJZm9yIChpID0gMDsgaTwoeTQuc2l6ZSgpIC0geDQuc2l6ZSgpKTsgaSsrKQoJCXsKCQkJeiA9IHogKyAnMCc7CgkJfQoJCXogPSB6ICsgeDQ7CgkJeDQgPSB6OwoJfQoJcCA9IDA7Cglmb3IgKGkgPSB4NC5zaXplKCkgLSAxOyBpID49IDA7IGktLSkKCXsKCQlzdW0gPSBwICsgKHg0W2ldIC0gJzAnKSArICh5NFtpXSAtICcwJyk7CgkJcCA9IDA7CgkJaWYgKHN1bSA+PSAxMCkKCQkJcCA9IDE7CgkJYyA9ICgoc3VtICUgMTApICsgJzAnKTsKCQl6MSA9IHoxICsgYzsKCX0KCWlmIChzdW0gPj0gMTApCgkJejEgPSB6MSArICIxIjsKCXJldmVyc2UoejEuYmVnaW4oKSwgejEuZW5kKCkpOwoJcmV0dXJuIHoxOwp9CiA=