#include using namespace std; using VS = vector; using LL = long long; using VI = vector; using VVI = vector; using VL = vector; using VVL = vector; #define ALL(a) begin((a)),end((a)) #define RALL(a) (a).rbegin(), (a).rend() #define PB push_back #define EB emplace_back #define MP make_pair #define SZ(a) int((a).size()) #define SORT(c) sort(ALL((c))) #define RSORT(c) sort(RALL((c))) #define UNIQ(c) (c).erase(unique(ALL((c))), end((c))) #define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++) #define FORR(i, s, e) for (int(i) = (s); (i) > (e); (i)--) #define debug(x) cerr << #x << ": " << x << endl const int INF = 1e9; const LL LINF = 1e16; const LL MOD = 1000000007; const double PI = acos(-1.0); int DX[8] = { 0, 0, 1, -1, 1, 1, -1, -1 }; int DY[8] = { 1, -1, 0, 0, 1, -1, 1, -1 }; /* ----- 2018/08/31 Problem: yukicoder265 / Link: https://yukicoder.me/problems/no/265 ----- */ /* ------問題------ -----問題ここまで----- */ /* -----解説等----- ----解説ここまで---- */ using PII = pair; vectorexpr0(const string& s, int& i); vectorexpr1(const string& s, int& i); vectorexpr2(const string& s, int& i); vector expr0(const string& s, int& i) { auto res = expr1(s, i); while (s[i] == '+'&&i < SZ(s)) { i++; auto res2 = expr1(s, i); for (auto it : res2) { res.push_back(it); } } return res; } vector expr1(const string& s, int& i) { auto res = expr2(s, i); while (s[i] == '*' && i < SZ(s)) { i++; auto res2 = expr2(s, i); PII last = res.back(); last.first *= res2.front().first; last.second += res2.front().second; res.back() = last; } return res; } vector differentiation(const vector& poly) { vectorres; for (auto const &it : poly) { if (it.second) { res.push_back(PII(it.second*it.first, it.second-1)); } } return res; } vectorexpr2(const string& s, int& i) { if (s[i] == 'd') { i++; assert(s[i] == '{'); i++; auto res = expr0(s, i); // differentiation res = differentiation(res); assert(s[i] == '}'); i++; // '{' return res; } else if (s[i] == 'x') { PII a = PII(1,1); i++; return vector({a}); } else { // num assert(isdigit(s[i])); PII a = PII(s[i] - '0', 0); i++; return vector({ a }); } } int main() { cin.tie(0); ios_base::sync_with_stdio(false); int N; cin >> N; int d; cin >> d; string s; cin >> s; int i = 0; auto res = expr0(s, i); vectorans(d + 1); for (const auto& it : res) { ans[it.second] += it.first; } FOR(i, 0, d + 1) { cout << ans[i] << " \n"[i == d]; } return 0; }