typedef long long ll; #define REP(i,n) for(int i=0; i<(int)(n); i++) #include #include #include #include inline int getInt(){ int s; scanf("%d", &s); return s; } #include using namespace std; char s[50000 + 100]; int n, d; pair parseTerm(int &pos){ int x = 0; ll i = 1; for(; pos < n; pos++){ if(s[pos] == 'x'){ x++; }else if(isdigit(s[pos])){ i *= s[pos] - '0'; }else if(s[pos] == '*'){ }else{ break; } } return make_pair(x, i); } vector parse(int &pos){ vector ret(d + 1); while(pos < n){ const char c = s[pos]; // printf("%d: %c\n", pos, c); if(c == 'd'){ pos += 2; // d{ const vector tmp = parse(pos); pos += 1; // } REP(i,d) ret[i] += (i + 1) * tmp[i + 1]; }else if(isdigit(c) || c == 'x'){ const pair tmp = parseTerm(pos); ret[tmp.first] += tmp.second; }else{ break; } if(pos < n && s[pos] == '+') pos++; } return ret; } vector parse(){ int pos = 0; return parse(pos); } int main(){ n = getInt(); d = getInt(); scanf("%s", s); const vector ret = parse(); REP(i,d+1) printf("%lld ", ret[i]); puts(""); return 0; }