#include <iostream>
using namespace std;
unsigned long long F[21];
int M, N;
bool f = true;
int k[1005];
void D(int m, int n, int d) {
if (m == 1) {
k[d] = n;
unsigned long long c = F[N];
for (int i = 0; i <= d; ++i) c /= F[k[i]];
if (!f) cout << " + ";
f = false;
if (c > 1 || !N) cout << c;
for (int i = 0; i <= d; ++i) {
if (k[i]) {
cout << "x" << (i + 1);
if (k[i] > 1) cout << "^" << k[i];
}
}
return;
}
for (int i = n; i >= 0; --i) {
k[d] = i;
D(m - 1, n - i, d + 1);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
F[0] = 1;
for (int i = 1; i <= 20; ++i) F[i] = F[i - 1] * i;
if (cin >> M >> N && M > 0 && N >= 0 && N <= 20) {
D(M, N, 0);
cout << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVuc2lnbmVkIGxvbmcgbG9uZyBGWzIxXTsKaW50IE0sIE47CmJvb2wgZiA9IHRydWU7CmludCBrWzEwMDVdOwoKdm9pZCBEKGludCBtLCBpbnQgbiwgaW50IGQpIHsKICAgIGlmIChtID09IDEpIHsKICAgICAgICBrW2RdID0gbjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYyA9IEZbTl07CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gZDsgKytpKSBjIC89IEZba1tpXV07CiAgICAgICAgaWYgKCFmKSBjb3V0IDw8ICIgKyAiOwogICAgICAgIGYgPSBmYWxzZTsKICAgICAgICBpZiAoYyA+IDEgfHwgIU4pIGNvdXQgPDwgYzsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBkOyArK2kpIHsKICAgICAgICAgICAgaWYgKGtbaV0pIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgIngiIDw8IChpICsgMSk7CiAgICAgICAgICAgICAgICBpZiAoa1tpXSA+IDEpIGNvdXQgPDwgIl4iIDw8IGtbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZm9yIChpbnQgaSA9IG47IGkgPj0gMDsgLS1pKSB7CiAgICAgICAga1tkXSA9IGk7CiAgICAgICAgRChtIC0gMSwgbiAtIGksIGQgKyAxKTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBGWzBdID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDIwOyArK2kpIEZbaV0gPSBGW2kgLSAxXSAqIGk7CiAgICBpZiAoY2luID4+IE0gPj4gTiAmJiBNID4gMCAmJiBOID49IDAgJiYgTiA8PSAyMCkgewogICAgICAgIEQoTSwgTiwgMCk7CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQogICAgcmV0dXJuIDA7Cn0=