#include<vector>
#include<iostream>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
using namespace std;
struct SS{
  int ch;//true>c
  char c;
  int n;
};

pair<int,string> to_split_int_string(string s){
  stringstream ss(s);
  int i;
  ss>>i;
  string sss;
  ss>>sss;
  return make_pair(i,sss);
}
vector<SS> conv(string s){
  stack<SS> st;
  vector<SS> res;
  for(int i=0;i<s.size();i++){
    if(s[i]<'0'||'9'<s[i]){
      if(!st.empty()){
        SS tmp = st.top();
        while((tmp.c!='*'&&s[i]!='*')||tmp.c=='*'){
          res.push_back(tmp);
          st.pop();
          if(st.empty())break;
          tmp=st.top();
        }
      }
      st.push(SS{1,s[i],0});
    }else{
      pair<int,string> tmp= to_split_int_string(s.substr(i));
      res.push_back(SS{0,0,tmp.first});
      s= tmp.second;
      i=-1;
    }
  }
  while(!st.empty()){
    res.push_back(st.top());st.pop();
  }
  return res;
}

void print(vector<SS> cul){
  for(int i=0;i<cul.size();i++){
    if(cul[i].ch){
      cout<<cul[i].c<<" ";
    }else{
      cout<<cul[i].n<<" ";
    }
  }
  cout<<endl;
}

long long cccc(long long a,long long b,char c){
  switch(c){
    case '+':return a+b;
    case '-':return a-b;
    case '*':return a*b;
  }
}

int solve(vector<SS> list){
  stack<long long> st;
  for(int i=0;i<list.size();i++){
    if(list[i].ch){
      long long a = st.top();st.pop();
      long long b = st.top();st.pop();
      st.push(cccc(b,a,list[i].c));
    }else{
      st.push(list[i].n);
    }
  }
  return st.top();
}

int CCC(string s){
  vector<SS> cul = conv(s);
  //print(cul);
  return solve(cul);
}


vector<vector<int> > F;
string c = "0123456789+-*";
vector<int> vec = {8,0,6,9,3,7,5,2,4,10,1,11,12};
vector<vector<vector<int> > > judge={
  {{0,0},{0,1},{0,2},{1,0},{1,2},{2,0},{2,2},{3,0},{3,2},{4,0},{4,1},{4,2}},//0
  {{0,0},{1,0},{2,0},{3,0},{4,0}},//1
  {{0,0},{0,1},{0,2},{1,2},{2,0},{2,1},{2,2},{3,0},{4,0},{4,1},{4,2}},//2
  {{0,0},{0,1},{0,2},{1,2},{2,0},{2,1},{2,2},{3,2},{4,0},{4,1},{4,2}},//3
  {{0,0},{0,2},{1,0},{1,2},{2,0},{2,1},{2,2},{3,2},{4,2}},//4
  {{0,0},{0,1},{0,2},{1,0},{2,0},{2,1},{2,2},{3,2},{4,0},{4,1},{4,2}},//5
  {{0,0},{0,1},{0,2},{1,0},{2,0},{2,1},{2,2},{3,0},{3,2},{4,0},{4,1},{4,2}},//6
  {{0,0},{0,1},{0,2},{1,2},{2,2},{3,2},{4,2}},//7
  {{0,0},{0,1},{0,2},{1,0},{1,2},{2,0},{2,1},{2,2},{3,0},{3,2},{4,0},{4,1},{4,2}},//8
  {{0,0},{0,1},{0,2},{1,0},{1,2},{2,0},{2,1},{2,2},{3,2},{4,0},{4,1},{4,2}},//9
  {{-1,1},{0,0},{0,1},{0,2},{1,1}},//+
  {{0,0},{0,1},{0,2}},//-
  {{0,0}}//dot
};

bool jj(int x,int y,vector<vector<int>> jud){
  for(int i=0;i<jud.size();i++){
    if(F[x+jud[i][0]][y+jud[i][1]]==0){
      return false;
    }
  }
  return true;
}
void jjfill(int x,int y,vector<vector<int>> jud){
  for(int i=0;i<jud.size();i++){
    F[x+jud[i][0]][y+jud[i][1]]=0;
  }
}

char C(int x,int y){
  for(int i=0;i<vec.size();i++){
    if(jj(x,y,judge[vec[i]])){
      jjfill(x,y,judge[vec[i]]);
      return c[vec[i]];
    }
  }
  return 0;
}


int main(){
  int n;
  cin>>n;
  F.resize(300);
  for(int i=0;i<300;i++){
    F[i].resize(300);
    for(int j=0;j<300;j++){
      F[i][j]=0;
    }
  }
  for(int i=0;i<n;i++){
    int xa,ya,xb,yb;
    cin>>xa>>ya>>xb>>yb;
    xa+=5;
    xb+=5;
    ya+=5;
    yb+=5;
    swap(xa,ya);
    swap(xb,yb);
    if(xa==xb){
      if(ya>yb)swap(ya,yb);
      for(int j=ya;j<=yb;j++){
        F[xa][j]=1;
      }
    }else{
      if(xa>xb)swap(xa,xb);
      for(int j=xa;j<=xb;j++){
        F[j][ya]=1;
      }
    }
  }
  string cul="";
  for(int i=0;i<300;i++){
    for(int j=0;j<300;j++){
      if(F[j][i]==1){
        cul += C(j,i);
        /*
        for(int i=0;i<20;i++){
          for(int j=0;j<100;j++){
            cout<<(F[i][j]?'*':' ');
          }cout<<endl;
        }cout<<endl;
        */
      }
    }
  }
  //cout<<cul<<endl;
  cout<<CCC(cul)<<endl;
}


Measured memory_bytes: 1532