#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

int analize(string str){
  int res=0;
  {
    bool ok=true;
    for(int i=0;i<(int)str.size();i++){
      if(!(str[i]>='0'&&str[i]<='9')){
        ok=false;
        break;
      }
    }
    if(ok){
      return atoi(str.c_str());
    }
  }
  for(int i=(int)str.size()-1;i>=0;i--){
    if(str[i]=='+'){
      res+=analize(str.substr(0,i));
      res+=analize(str.substr(i+1));
      return res;
    }
    else if(str[i]=='-'){
      res+=analize(str.substr(0,i));
      res-=analize(str.substr(i+1));
      return res;
    }
  }
  for(int i=0;i<(int)str.size();i++){
    if(str[i]=='*'){
      res=1;
      res*=analize(str.substr(0,i));
      res*=analize(str.substr(i+1));
      return res;
    }
  }
}

int num_aas[10][5][3]={
  {
    {1,1,1},
    {1,0,1},
    {1,0,1},
    {1,0,1},
    {1,1,1}
  },
  {
    {0,0,1},
    {0,0,1},
    {0,0,1},
    {0,0,1},
    {0,0,1}
  },
  {
    {1,1,1},
    {0,0,1},
    {1,1,1},
    {1,0,0},
    {1,1,1}
  },
  {
    {1,1,1},
    {0,0,1},
    {1,1,1},
    {0,0,1},
    {1,1,1}
  },
  {
    {1,0,1},
    {1,0,1},
    {1,1,1},
    {0,0,1},
    {0,0,1}
  },
  {
    {1,1,1},
    {1,0,0},
    {1,1,1},
    {0,0,1},
    {1,1,1}
  },
  {
    {1,1,1},
    {1,0,0},
    {1,1,1},
    {1,0,1},
    {1,1,1}
  },
  {
    {1,1,1},
    {0,0,1},
    {0,0,1},
    {0,0,1},
    {0,0,1}
  },
  {
    {1,1,1},
    {1,0,1},
    {1,1,1},
    {1,0,1},
    {1,1,1}
  },
  {
    {1,1,1},
    {1,0,1},
    {1,1,1},
    {0,0,1},
    {1,1,1}
  },
};

int plus_aa[5][3]=
  {
    {0,0,0},
    {0,1,0},
    {1,1,1},
    {0,1,0},
    {0,0,0},
  };
int minus_aa[5][3]=
  {
    {0,0,0},
    {0,0,0},
    {1,1,1},
    {0,0,0},
    {0,0,0},
  };
int mul_aa[5][3]=
  {
    {0,0,0},
    {0,0,0},
    {0,1,0},
    {0,0,0},
    {0,0,0},
  };
  
int N;
bool field[201][201];
bool used[201][201];

char GetMatchChar(int y,int x){
  //cout<<y<<" "<<x<<endl;
  //if(y==1)cout<<x<<endl;
  char res=-1;
  for(int k=0;k<10;k++){
    bool ok=true;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(num_aas[k][i][j]==0)continue;
        if(num_aas[k][i][j]!=(int)field[i+y][j+x])
          ok=false;
      }
    }
    if(ok)return '0'+k;
  }
  // +
  {
    //if(y==1&&x==3)cout<<"a"<<endl;
    bool ok=true;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(plus_aa[i][j]==0)continue;
        if(plus_aa[i][j]!=(int)field[i+y][j+x])
          ok=false;
      }
    }
    if(ok)return '+';
  }
  // -
  {
    bool ok=true;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(minus_aa[i][j]==0)continue;
        if(minus_aa[i][j]!=(int)field[i+y][j+x]){
          ok=false;
        }
      }
    }
    if(ok)return '-';
  }
  // *
  {
    bool ok=true;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(mul_aa[i][j]==0)continue;
        if(mul_aa[i][j]!=(int)field[i+y][j+x]){
          ok=false;
        }
      }
    }
    if(ok)return '*';
  }
  return res;
}

void dfs(int y,int x,set<pii> &st,int &miny,int &minx){
  miny=min(miny,y);
  minx=min(minx,x);
  //cout<<y<<" "<<x<<endl;
  used[y][x]=true;
  st.insert(pii(y,x));
  int dy[]={-1,0,0,1};
  int dx[]={0,1,-1,0};
  for(int i=0;i<4;i++){
    int ny=dy[i]+y;
    int nx=dx[i]+x;
    if(ny>=0&&nx>=0&&ny<=200&&nx<=200&&!used[ny][nx]
       &&field[ny][nx]){
      dfs(ny,nx,st,miny,minx);
    }
  }
}

int main(){

  map<set<pii>,char> pointsToChar;
  for(int k=0;k<10;k++){
    set<pii> st;
    int miny=1<<29,minx=1<<29;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(num_aas[k][i][j]){
          miny=min(miny,i);
          minx=min(minx,j);
        }
      }
    }
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(num_aas[k][i][j]){
          if(miny==-1){
            miny=i,minx=j;
          }
          st.insert(pii(i-miny,j-minx));
          // if(k==1){
          //   // cout<<"a"<<endl;
          //   //cout<<i-miny<<" "<<j-minx<<endl;
          // }
        }
      }
    }
    pointsToChar[st]=k+'0';
  }
  {
    int miny=1<<29,minx=1<<29;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(plus_aa[i][j]){
          miny=min(miny,i);
          minx=min(minx,j);
        }
      }
    }
    set<pii> st;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(plus_aa[i][j]){
          if(miny==-1){
            miny=i,minx=j;
          }
          //cout<<i<<" "<<j<<endl;
          st.insert(pii(i-miny,j-minx));
          //cout<<i-miny<<" "<<j-minx<<endl;
        }
      }
    }
    pointsToChar[st]='+';
  }
  {
    int miny=1<<29,minx=1<<29;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(minus_aa[i][j]){
          miny=min(miny,i);
          minx=min(minx,j);
        }
      }
    }
    set<pii> st;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(minus_aa[i][j]){
          if(miny==-1){
            miny=i,minx=j;
          }
          st.insert(pii(i-miny,j-minx));
        }
      }
    }
    pointsToChar[st]='-';
  }
  {
    int miny=1<<29,minx=1<<29;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(mul_aa[i][j]){
          miny=min(miny,i);
          minx=min(minx,j);
        }
      }
    }
    set<pii> st;
    for(int i=0;i<5;i++){
      for(int j=0;j<3;j++){
        if(mul_aa[i][j]){
          if(miny==-1)miny=i,minx=j;
          st.insert(pii(i-miny,j-minx));
        }
      }
    }
    pointsToChar[st]='*';
  }
  
  string cmd;
  cin>>N;
  for(int i=0;i<N;i++){
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    for(int y=min(b,d);y<=max(b,d);y++)
      for(int x=min(a,c);x<=max(a,c);x++)
        field[y][x]=true;
  }
  
  // x=0から左まで、数字か演算子があるかどうかを調べる
  // 見つかった順番にstringを構築する
  for(int x=0;x<=200;x++){
    for(int y=0;y<=200;y++){
      if(used[y][x])continue;
      if(!field[y][x])continue;
      // ここから深さ優先探索して，数字を取得する
      set<pii> st;
      int miny=1<<29,minx=1<<29;
      dfs(y,x,st,miny,minx);
      set<pii> tmp;
      //cout<<y<<" "<<x<<endl;
      for(pii p : st){
        pii np=pii(p.first-miny,p.second-minx);
        tmp.insert(np);
        // if(y==4){
        //   cout<<np.first<<" "<<np.second<<endl;
        // }
      }
      st=tmp;
      //cout<<st.size()<<endl;
      if(pointsToChar.count(st)){
        char ch=pointsToChar[st];
        cmd+=ch;
      }
    }
  }
  // cmdを構文解析
  //cout<<cmd<<endl;
  cout<<analize(cmd)<<endl;
  return 0;
}


Measured memory_bytes: 1256