#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;
}