#include<bits/stdc++.h>
using namespace std;
int n;
typedef long long ll;
const int M=20;
struct node{
    int upcai,downmo,upmo,downcai;
}a[M];
int vis[M];
ll ans=-0x3f3f3f3f;
int pre;
void dfs(node p[],int dep,ll cai,ll mo){
    if(dep==n+1){
        ans=max(ans,cai*mo);
     //   cout<<ans<<endl;
        return;
    }
    for(int i=1;i<=2;i++){
       //if(vis[dep]){
       	 if(i==1){
               // vis[dep]=1;
                
                dfs(p,dep+1,cai+p[dep].upcai,(mo-p[dep].downmo)<=0 ? 0:(mo-p[dep].downmo));
             //   vis[dep]=0;
            }
            if(i==2){
               // vis[dep]=1;
               
                dfs(p,dep+1,(cai-p[dep].downcai)<=0 ? 0: (cai-p[dep].downcai),mo+p[dep].upmo);
               // vis[dep]=0;
            }
	  // }
           
        
    }
}

int main(){
    cin>>n;
    for(int i=1;i<=n;i++)    cin>>a[i].upcai>>a[i].downmo
        >>a[i].upmo>>a[i].downcai;
    dfs(a,1,0,0);
    cout<<ans<<endl;
    return 0;
}