#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) {
//	vector<long long> b, e, v;
//	for(int i = a; i<b; i++) {
//		if(s[i] == '*') {
//			long long j = i-1;
//			string num;
//			long long c1, c2;
//			while(s[i] == ' ') {i--;}
//			while(s[i] >= '0' && s[i] <= '9') {
//				i--;
//				num.push_back(s[i]);
//			}
//			j = i+1;
//			while(s[i] == ' ') {i++;}
//			i--;
//			e.push_back(i);
//			reverse(num.begin(), num.end();
//			stringstream ss(num);
//			ss >> c1;
//			v.push_back(c1);
//	}
//	for(int i = a; i<b; i++) {
//		string num;
//		if(s[i] <= '0'
//	}
//
//}
	

//long long parse(string &s, long long a, long long b) {
//	long long sum;
//	string add;
//
//	for (int i = a; i < b; i++) {
//		while(s[i] == ' ') {i++};
//		long long pred=stoll(s, i, )
//		if (s[i] == '*') {
//			int j = i;
//			while (s[i] == ' ') {i--;}
//			while (s[i] >= '0' && s[i] <= '9') {
//				i--;
//			} 
//			i++;
//			sum = stoll(s, i, 10);
//			i = j;
//			while (s[i] == '*') {
//				i++;
//				while (s[i] == ' ') {i++;}
//				sum *= stoll(s, i, 10);
//				while (s[i] != '*' && s[i] != '+' && s[i] != '-') {
//					i++;
//				}
//			}
//			
//		}
//		
//	}
//
//}


long long parse(string &s, long long a, long long b) {
	stringstream ss;
	vector<long long> v;
	vector<char> op;
	char ch;
	for(int 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(int i =0; i<v.size(); i++) {
//		cout << v[i] << " ";
//	}
//	cout << "\n";
//	for(int i = 0; i<op.size(); i++) {
//		cout << op[i] << " ";
//	}
//	cout << "\n\n";
	
	for(int i = 0; i<op.size(); i++) {
		if(op[i]=='*') {
			v[i+1] *= v[i];
		}
	}
//	long long vys = 0;
	for(int i = op.size() - 1;  i>=0; i--) {
		if(op[i] == '*') {
			v[i] = v[i+1];
		}
	}
	long long vys = v[0];
	for(int 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(int i = 0; i<r; i++) {
			getline(cin, v[i]);
		}		
		string vys;
		if(r>1) {
		vector<long long> odm, zl;
		for(int 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)));
			}
			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(int 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";
	}
}