#include <iostream>
#include <cstdio>
#include <sstream>
#include <vector>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <set>
#include <cmath>

using namespace std;


long long parse(const string &s, long long a, long long b) {
    stringstream ss;
    vector<long long> v;
    vector<char> op;
    char ch;
    for(long long i = a; i<b; i++) {
        ss << s[i];
    }
   // cout << "parsing: " << ss.str() << "\n";
    long long c;
    ss >> c;
    v.push_back(c);
    while(ss >> ch) {
        op.push_back(ch);
        ss >> c;
        v.push_back(c);
    }
    for(long long i = 0; i<op.size(); i++) {
        if(op[i]=='*') {
            v[i+1] *= v[i];
        }
    }
//	long long vys = 0;
    if(v.size() == 0) {
        return 0;
    }
    for(long long i = (long long) op.size() - 1;  i>=0; i--) {
        if(op[i] == '*') {
            v[i] = v[i+1];
        }
    }
    long long vys = v[0];
    for(long long i = 0; i<op.size(); i++) {
        if(op[i] == '+') {
            vys += v[i+1];
        }
        if(op[i] == '-') {
            vys -= v[i+1];
        }
    }
    return vys;
}

int main()
{
   // std::ios::sync_with_stdio(false);
    long long r, s;
    while(cin >> r >> s) {
        if(r==s && s == 0) {
            break;
        }
        string sss;
        getline(cin, sss);
        vector<string> v(3);
        for(long long i = 0; i<r; i++) {
            getline(cin, v[i]);
        }
        string vys;
        if(r>1) {
        vector<long long> odm, zl;
        for(long long i =0; i<v[1].size(); i++) {
            if(v[0][i] == '-') {
                long long st = i;
                while(i<v[0].size() && v[0][i] == '-') {
                    i++;
                }
                long long end = i;
                long long a = parse(v[1], st, end);
                if (a>=0){
                    odm.push_back(sqrt(a));
                }
                else {
                    odm.push_back(0);
                }
            }
            else if(v[1][i] == '=') {
                long long st = i;
                while(i<v[1].size() && v[1][i] == '=' ) {
                    i++;
                }
                long long end = i;
                long long a = parse(v[0], st, end);
                long long b = parse(v[2], st, end);
                if (b!=0)
                    zl.push_back(a/b);
                else {
                    zl.push_back(0);

                }
            }
        }
        long long odm_i=0, zl_i=0;
//		cout << "som tu" << endl;
        for(long long i = 0; i<v[1].size(); i++) {
            if(v[1][i] == '\\') {
                stringstream ss;
                ss << odm[odm_i];
                vys = vys + ss.str();
                odm_i++;
                i+=2;
                while(i<v[0].size() &&  v[0][i]=='-'){
                    i++;
                }
                i--;
            }
            else if(v[1][i] == '=') {
                stringstream ss;
                ss << zl[zl_i];
                zl_i++;
                vys = vys+ss.str();
                while(i<v[1].size() && v[1][i]=='=') {
                    i++;
                }
                i--;
            } else {
                vys.push_back(v[1][i]);
            }

        }
        }
        else {
            vys = v[0];
        }
//cout << vys << "\n";
        cout << parse(vys, 0, vys.size()) << "\n";
    }
    return 0;
}