#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(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 = 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(r);
		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;
				odm.push_back(sqrt(parse(v[1], st, end)));
			}
			else if(v[1][i] == '=') {
			    long long st = i;
                while(i<v[1].size() && v[1][i] == '=' ) {
                    i++;
                }
                long long end = i;
                zl.push_back(parse(v[0], st, end)/parse(v[2], st, end));	
			}
		}
		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;
}