#include <iostream>
#include <string>

using namespace std;

long long C(int n, int k) {
    if (k > n / 2) k = n - k;
    long long res = 1;
    for (int i = 1; i <= k; ++i) res = res * (n - i + 1) / i;
    return res;
}

int main() {
    ios_base::sync_with_stdio(0); 
    cin.tie(0);
    
    string line;
    while (getline(cin, line)) {
        string s;
        for (char c : line) {
            if (c != ' ' && c != '\t' && c != '\r') s += c;
        }
        if (s.empty()) continue;
        
        int p = s.find('+'), r = s.find(')'), c = s.find('^');
        if (p == -1 || r == -1 || c == -1) continue;
        
        string v1 = s.substr(1, p - 1);
        string v2 = s.substr(p + 1, r - p - 1);
        int n = stoi(s.substr(c + 1));
        
        if (!n) { 
            cout << "1\n"; 
            continue; 
        }
        
        for (int k = 0; k <= n; ++k) {
            long long v = C(n, k);
            if (v > 1) cout << v;
            
            if (n - k) { 
                cout << v1; 
                if (n - k > 1) cout << "^" << n - k; 
            }
            if (k) { 
                cout << v2; 
                if (k > 1) cout << "^" << k; 
            }
            
            if (k < n) cout << "+";
        }
        cout << "\n";
    }
    return 0;
}