#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MOD = 1e9 + 7;
string s, hz;
char c[2000010], top;
int a[100010];
void hzbds(string s){
int x = 0;
for(int i = 0; i < s.size(); i++){
if(s[i] == '('){
c[++top] = s[i];
}else if(s[i] == ')'){
while(top > 0 && c[top] != '('){
hz += c[top];
top--;
}
top--;
}else if(s[i] >= '0' && s[i] <= '9'){
hz += s[i];
}else if(s[i] == '+' || s[i] == '-'){
hz += ' ';
while(top > 0 && c[top] != '('){
hz += c[top], top--;
}
c[++top] = s[i];
}else if(s[i] == '*' || s[i] == '/'){
hz += ' ';
while(top > 0 && c[top] != '(' && c[top] != '+' && c[top] != '-'){
hz += c[top], top--;
}
c[++top] = s[i];
}else if(s[i] == '^'){
hz += ' ';
while(top > 0 && c[top] != '(' && c[top] != '+' && c[top] != '-' && c[top] != '*' && c[top] != '/' && c[top] != '^'){
hz += c[top], top--;
}
c[++top] = s[i];
}
}
while(top > 0){
hz += c[top];
top--;
}
}
int Pow(int x, int y){
int ans = 1;
while(y > 1){
if(y % 2 == 1){
ans = (ans % MOD * x % MOD) % MOD;
}
x = (x % MOD * x % MOD) % MOD;
y /= 2;
}
return (ans % MOD * x % MOD) % MOD;
}
signed main(){
cin >> s;
hzbds(s); top = 0;
for(int i = 0; i < hz.size(); i++){
cout << hz[i];
if(i == s.size() - 1 || (hz[i + 1] != ' ' && hz[i] != ' ')){
cout << ' ';
}
}
cout << '\n';
for(int i = 0, x = 0; i < hz.size(); i++){
if(hz[i] >= '0' && hz[i] <= '9'){
x = x * 10 + hz[i] - '0';
if(hz[i + 1] < '0' || hz[i + 1] > '9'){
a[++top] = x;
}
}else if(hz[i] == ' '){
x = 0;
}else{
if(hz[i] == '+'){
a[top - 1] = (a[top - 1] % MOD + a[top] % MOD) % MOD , top--;
x = 0;
}else if(hz[i] == '-'){
a[top - 1] = (a[top - 1] % MOD - a[top] % MOD + MOD) % MOD, top--;
x = 0;
}else if(hz[i] == '*'){
a[top - 1] = (a[top - 1] % MOD * a[top] % MOD) % MOD, top--;
x = 0;
}else if(hz[i] == '/'){
a[top - 1] = (a[top - 1] % MOD / a[top] % MOD) % MOD, top--;
x = 0;
}else if(hz[i] == '^'){
a[top - 1] = Pow(a[top - 1], a[top]);
a[top - 1] %= MOD, top--;
x = 0;
}
for(int j = 1; j < top; j++){
cout << a[j] << ' ';
}
cout << a[top];
if(i != hz.size() - 1 && hz[i + 1] != ' '){
cout << ' ';
}
for(int j = i + 1; j < hz.size(); j++){
cout << hz[j];
if(j == s.size() - 1 || (hz[j + 1] != ' ' && hz[j] != ' ' && ((hz[i] < ' 0' || hz[i] > '9') || (hz[i + 1] < ' 0' || hz[i + 1] > '9')))){
cout << ' ';
}
}
cout << '\n';
}
}
return 0;
}