#include <cmath>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <vector>
using namespace std;

const bool debug = false;
char tmp[1010];
char matrix[3][1010];

void apply(int &result, int current, char current_op)
{
    if (current_op == '+') {
        result += current;
    } else if (current_op == '-') {
        result -= current;
    } else {
        assert(false);
    }
}

int eval(vector<int> numbers, vector<char> ops)
{
    int result = 0;
    int current = numbers[0];
    char current_op = '+';
    int n = numbers.size();
    if (debug) {
        assert(n > 0);
        assert((int) ops.size() == (int) numbers.size() - 1);
    }
    for (int i = 0; i < n-1; i++) {
        int number = numbers[i+1];
        char op = ops[i];
        if (op == '*') {
            current *= numbers[i+1];
        } else {
            apply(result, current, current_op);
            current = number;
            current_op = op;
        }
    }
    apply(result, current, current_op);
    if (debug) {
        printf("# eval %d", numbers[0]);
        for (int i = 0; i < n-1; i++) {
            printf(" %c %d", ops[i], numbers[i+1]);
        }
        printf(" = %d\n", result);
    }
    return result;
}

int read_number(char *str, int len, int &pos)
{
    int number = 0;
    while (str[pos] >= '0' && str[pos] <= '9') {
        number *= 10;
        number += str[pos] - '0';
        pos++;
    }
    return number;
}

int eval_one_line(char *line, int len)
{
    vector<int> numbers;
    vector<char> ops;
    int pos = 0;
    while (pos < len) {
        char c = line[pos];
        if (c == ' ') {
            pos++;
            continue;
        }
        if (c >= '0' && c <= '9') {
            numbers.push_back(read_number(line, len, pos));
        } else {
            assert(c == '+' || c == '-' || c == '*');
            ops.push_back(c);
            pos++;
        }
    }
    int result = eval(numbers, ops);
    if (debug) {
        printf("# eval_one_line %d", numbers[0]);
        for (int i = 0; i < (int)numbers.size()-1; i++) {
            printf(" %c %d", ops[i], numbers[i+1]);
        }
        printf(" = %d\n", result);
    }
    return result;
}

int eval_two_lines(char *line0, char *line1, int len)
{
    vector<int> numbers;
    vector<char> ops;
    int pos = 0;
    while (pos < len) {
        char c = line1[pos];
        if (c == ' ') {
            pos++;
            continue;
        }
        if (c == '\\') {
            pos++;
            pos++;
            int beg = pos, sqrtlen = 0;
            while (pos < len && line0[pos] == '-') {
                pos++;
                sqrtlen++;
            }
            numbers.push_back(sqrt(eval_one_line(line1+beg, sqrtlen)));
        } else if (c >= '0' && c <= '9') {
            numbers.push_back(read_number(line1, len, pos));
        } else {
            if (debug) assert(c == '+' || c == '-' || c == '*');
            ops.push_back(c);
            pos++;
        }
    }
    int result = eval(numbers, ops);
    if (debug) {
        printf("# eval_two_lines %d", numbers[0]);
        for (int i = 0; i < (int)numbers.size()-1; i++) {
            printf(" %c %d", ops[i], numbers[i+1]);
        }
        printf(" = %d\n", result);
    }
    return result;
}

int eval_three_lines(char *line0, char *line1, char *line2, int len)
{
    vector<int> numbers;
    vector<char> ops;
    int pos = 0;
    while (pos < len) {
        char c = line1[pos];
        if (c == ' ') {
            pos++;
            continue;
        }
        if (c == '\\') {
            pos++;
            if (debug) assert(line1[pos] == '/');
            pos++;
            int beg = pos, sqrtlen = 0;
            while (pos < len && line0[pos] == '-') {
                pos++;
                sqrtlen++;
            }
            numbers.push_back(sqrt(eval_one_line(line1+beg, sqrtlen)));
        } else if (c == '=') {
            int beg = pos;
            int fraclen = 0;
            while (pos < len && line1[pos] == '=') {
                pos++;
                fraclen++;
            }
            numbers.push_back(eval_one_line(line0+beg, fraclen) / eval_one_line(line2+beg, fraclen));
        } else if (c >= '0' && c <= '9') {
            numbers.push_back(read_number(line1, len, pos));
        } else {
            if (debug) assert(c == '+' || c == '-' || c == '*');
            ops.push_back(c);
            pos++;
        }
    }
    return eval(numbers, ops);
}

int main()
{
    int r,c;
    while (scanf("%d%d", &r, &c) == 2 && c != 0) {
        fgets(tmp, 1010, stdin);
        for (int i = 0; i < r; i++) {
            fill(matrix[i], matrix[i] + c, ' ');
            fgets(matrix[i], 1010, stdin);
            matrix[i][c] = 0;
            if (debug) printf("# main '%s'\n", matrix[i]);
        }
        int result;
        if (r == 1) {
            result = eval_one_line(matrix[0], c);
        } else if (r == 2) {
            result = eval_two_lines(matrix[0], matrix[1], c);
        } else if (r == 3) {
            result = eval_three_lines(matrix[0], matrix[1], matrix[2], c);
        }
        printf("%d\n", result);
    }
    return 0;
}