#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <iostream>
#include <stack>
using namespace std;
int R,C;
char Map[10][10];
int Move2[6][2] = {{-1,-1},{-1,0},{0,-1},{0,1},{1,-1},{1,0}};
int Move1[6][2] = {{-1,0},{-1,1},{0,-1},{0,1},{1,0},{1,1}};
char Path[20];
bool bVisited[10][10];
int ileft,iright;
int cnum,pos;
inline bool InBoundary(int x,int y)
{
    if(x >= 0 && x<R && y>=0 && y<C+x%2)
        return true;
    return false;
}
bool Evaluate(int start,int n,int &value)
{
     stack<int> s1;
     stack<char> s2;
     int i = start;
     int t = 0;
      t = Path[i]-'0';  i++;
      if(isdigit(Path[i]))
      {
           if(t == 0)  return false;
       }
       while(isdigit(Path[i]))
       {
            t*=10; t+=Path[i]-'0';
            if(t >= 100)
                 return false;
             i++;
        }
    s1.push(t);
     while(1)
     {
             if(i > n-1)
             { 
                  if(!isdigit(Path[n-1])) return false;
                  break;
             }
             if(!isdigit(Path[i]))
             {
                 if(!s2.empty()) return false;
                 else     s2.push(Path[i]); 
                 i++;
             }
             else
             {
                 t = Path[i]-'0';  i++;
                 if(isdigit(Path[i]))
                 {
                    if(t == 0)
                       return false;
                 }
                 while(isdigit(Path[i]))
                 {
                     t*=10; t+=Path[i]-'0';
                     if(t >= 100)
                       return false;
                     i++;
                 }
                    char op = s2.top();s2.pop();
                    int re = s1.top();s1.pop();
                    switch(op)
                    {
                              case '+':s1.push(re+t); break;    
                              case '-':s1.push(re-t);break;
                              case '*':s1.push(re*t);break;  
                              case '/': 
                                   if(t == 0 || re%t!=0)
                                     return false;
                                   s1.push(re/t);
                                   break;    
                    }
              }      
     }
     value = s1.top();
     return true;
}      
bool DFS(int i,int j,int index)
{
     if(index == cnum)
     { 
         Path[index] = 0;
         if(Evaluate(pos,index,iright) && iright == ileft)
               return true;
         else  return false;
     }
     if(Map[i][j] == '=')
     {
         if(!Evaluate(0,index-1,ileft))
               return false; 
         pos = index;
     }
     if(i%2==1)
     {
           for(int k = 0; k<6; k++)
           {
                 int x = Move2[k][0]+i; int y = Move2[k][1]+j;
                 if(InBoundary(x,y) && bVisited[x][y] == false)
                 {
                      bVisited[x][y] = true;
                      Path[index] = Map[x][y];
                      if(DFS(x,y,index+1))
                         return true;
                      bVisited[x][y] = false;
                 }
           }
     }
     else
     {
         for(int k = 0; k <6; k++)
         {
                 int x = Move1[k][0]+i; int y = Move1[k][1]+j;
                 if(InBoundary(x,y) && bVisited[x][y] == false)
                 {
                      bVisited[x][y] = true;
                      Path[index] = Map[x][y];
                      if(DFS(x,y,index+1))
                         return true;
                      bVisited[x][y] = false;
                 }
         }
     }
     return false;
}
int main()
{
    while(scanf("%d",&R)==1 && R!=0)
    {
         scanf("%d",&C);
         int i,j;
         cnum = C*R+R/2;
         getchar();
         for(i = 0; i<R; i++)
         {     
               if(i%2 == 0)
               {
               for(j = 0; j<C; j++)
                 { scanf(" %c",&Map[i][j]); bVisited[i][j] = false;}
               getchar();
               }
               else
               {
                   for(j = 0; j<=C; j++)
                   {scanf("%c",&Map[i][j]); bVisited[i][j] = false;getchar();}
               }
         }
         for(i = 0; i<R; i++)
         {
                      for(j = 0; j<C+i%2; j++)
                      {
                            if(isdigit(Map[i][j]))
                            {
                                bVisited[i][j] = true;
                                Path[0] = Map[i][j]; 
                                if(DFS(i,j,1)) goto PRINT;
                                bVisited[i][j] = false;
                            }
                      }
         }
 PRINT:        printf("%s\n",Path);
    }
    return 0;
}