#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>
struct Interval {
long long l,r;
Interval(long long l=0,long long r = 0):l(l),r(r){}
};
long long getMaxIntersection(Interval a,Interval b){
long long interl = max(a.l,b.l);
long long interR = min(a.r,b.r);
if(interl>interR){
return -1;
}
return interR;
}
int main() {
long long l1,r1,l2,r2,l3,r3;
cin>>l1>>r1>>l2>>r2>>l3>>r3;
vector<Interval>intervals={
Interval(l1,r1),
Interval(l2,r2),
Interval(l3,r3)
};
long long maxSum=-1;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(i==j){
continue;
}
long long val1=getMaxIntersection(intervals[i], intervals[j]);
if(val1==-1){
continue;
}
long long val2=getMaxIntersection(intervals[j], intervals[i]);
if(val2==-1){
continue;
}
long long currentSum = val1+val2;
if(currentSum>maxSum){
maxSum=currentSum;
}
}
}
cout<<maxSum<<endl;
return 0;
}
// 64 位输出请用 printf("%lld")