#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
const long long INF=1e16;
struct node{
	int x,y,z;
}a[100100];
bool cmp(const node &A,const node &B){
	return A.y-A.z>B.y-B.z;
}
long long dp1[100100],dp2[100100];
priority_queue<int,vector<int>,greater<int> > q;
int main(){
//	freopen("C.in","r",stdin);
	int X,Y,Z;
	scanf("%d%d%d",&X,&Y,&Z);
	int n;
	n=X+Y+Z;
	long long ans=0;
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
		a[i].y-=a[i].x,a[i].z-=a[i].x;
		ans=ans+a[i].x;
	}
	sort(a+1,a+n+1,cmp);
	while(!q.empty()) q.pop();
	long long st=0;
	for(int i=1;i<=n;i++)
	{
		q.push(a[i].y);
		st=st+a[i].y;
		if(i>Y){
			st=st-q.top();
			q.pop();
		}
		dp1[i]=st;
	}
	while(!q.empty()) q.pop();
	st=0;
	for(int i=n;i>=1;i--)
	{
		q.push(a[i].z);
		st=st+a[i].z;
		if(i+Z<=n){
			st=st-q.top();
			q.pop();
		}
		dp2[i]=st;
	}
	long long sum=-INF;
	for(int i=(Y>=1?Y:1);i+Z<=n&&i<=n-1;i++)
	{
		if(dp1[i]+dp2[i+1]>sum)
			sum=dp1[i]+dp2[i+1];
	}
	printf("%lld\n",ans+sum);
	return 0;
}
