//   @author - Archit


#include<bits/stdc++.h>
using namespace std;


#define pb push_back
#define mp make_pair
#define ll long long
#define pll pair<ll,ll> 
#define all(v) v.begin(),v.end()
#define vll vector<ll> 
#define vvll vector<vll >
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
#define ff first
#define ss second 
#define cres(v,n) v.clear(),v.resize(n);
#define rjust(x) cout << std::right << std::setw(5) << x<<;
#define precise(x,y) cout<<std::fixed << std::setprecision(y) << x;
#define INF 1000000000000000

//INPUT
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

template<typename T>
void read(int x , vector<T>&Arr)
{
	for(ll i=x ;i<Arr.size();++i)
		cin>>Arr[i];
}

template<typename T >
void read(int x , vector<vector<T> >&Arr)
{
	for(ll i=x ;i<Arr.size();++i)
		{
			for(ll j=0 ;j<Arr[i].size();++j)
				cin>>Arr[i][j];
		}
}


template<typename T >
void readg(int x , vector<vector<T> >&Arr , int e)
{
	for(ll i=1 ;i<=e;++i)
		{
			ll x,y;
			cin>>x>>y;
			Arr[x].pb(y);
			Arr[y].pb(x);

		}
}

template<typename T>
void read(int x , T Arr[], int n)
{
	for(ll i=x ;i<n;++i)
		cin>>Arr[i];
}



//OUTPUT
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


template<typename T>
void write(int x , vector<T>&Arr)
{
	for(ll i=x ;i<Arr.size();++i)
		cout<<Arr[i]<<" ";
}

template<typename T>
void write(int x , vector<vector<T> >&Arr)
{
		for(ll i=x ;i<Arr.size();++i)
		{
			for(ll j=0 ;j<Arr[i].size();++j)
				cout<<Arr[i][j]<< " ";
			cout<<"\n";
		}
}

template<typename T>
void write(int x , T Arr[], int n)
{
	for(ll i=x ;i<n;++i)
		cout<<Arr[i]<<" ";
}

template<typename T>
void write(set<T>&s)
{
	for(auto i : s) 
		cout<< i << " ";
}


template<typename T0, typename T1>
void write(map<T0,T1>&m)
{
	for(auto i : m) 
		cout<< i.ff << " " << i.ss<<"\n";
}



//FUNCTIONS
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// const int sieve_size = 100005;
// int sieve[sieve_size];

// void Sieve()
// {
// 	sieve[0] = sieve[1] = -1;
	
// 	for(int i=2 ;i<sieve_size ;i++)
// 		sieve[i]=i;

// 	for(int i = 2 ;i*i<=sieve_size ;++i)
// 	{
// 		if(sieve[i]==i)
// 		{
// 			for(int j = i*i ; j<sieve_size;j+=i)
// 			{
// 				if(sieve[j]==j)
// 				sieve[j]=i;
// 			}
// 		}
// 	}
// }

const ll maxn = 1e5 +5;
ll dp[maxn][5];
vll a,b,c;
ll n;

ll rec(ll idx , ll last)
{
	if(idx == n)
		return 0;
	if(dp[idx][last] != -1)
		return dp[idx][last];
	
	ll aa=-INF,bb=-INF, cc =-INF;
	if(last!=1)
	aa = a[idx] + rec(idx+1,1);
	if(last!=2)
	bb = b[idx] + rec(idx+1,2);
	if(last!=3)
	cc = c[idx] + rec(idx+1,3);
	
	return dp[idx][last] = max(aa,max(bb,cc));
}

// void printsol(ll idx)
// {
// 	if(idx == n)
// 		return ;

// 	if(a[idx] + rec(idx+1) == dp[idx])
// 		{cout<<"A "<<a[idx]<<"\n";printsol(idx+1);}
// 	else
// 		{
// 		if(b[idx] + rec(idx+1) == dp[idx])
// 		{cout<<"B " <<b[idx]<<"\n";printsol(idx+1);}
// 		else
// 		if(c[idx] + rec(idx+1) == dp[idx])
// 		{
// 			cout<<"C "<<c[idx]<<"\n";printsol(idx+1);
// 		}
// 		}	
// 	return ;
// }


int main()
{
	fast;

	memset(dp,-1,sizeof dp);
	cin>>n;
	cres(a,n);
	cres(b,n);
	cres(c,n);
	for(ll i = 0 ;i<n;i++)
		cin>>a[i]>>b[i]>>c[i];
	//write(0,a);
	cout<<rec(0,0)<<"\n";
	//printsol(0);

















	// #ifndef ONLINE_JUDGE
 //    	cout << "\nTime Elapsed : " << 1.0 * clock() / CLOCKS_PER_SEC << " s\n";
 //    #endif

	// return 0;
	
}



Measured memory_bytes: 12800