#include <bits/stdc++.h>
#define ll long long int
#define ull unsigned long long int
#define loop(i ,a,b) for(int i = a;i<b;i++)
#define rloop(i,a,b) for(int i = a ; i>b;i--)
#define loopll(i,a,b) for( long long int i = a; i<b;i++)
#define rloopll(i,a,b) for(long long int i = a; i>b;i--)
#define eb emplace_back
#define pii pair<int ,int>
#define pll pair<ll ,ll>
#define mk make_pair
#define intmin INT_MIN
#define intmax INT_MAX
#define cout(x) cout<<x<<" ";
using namespace std;
void vec(vector<int> & v){

    for(int i = 0;i<v.size() ; i++){
        cout<<v[i]<< " ";
    }
    cout<<endl;
}
void vec_ll(vector<long long int> & v){

    for(int i = 0;i<v.size() ; i++){
        cout<<v[i]<< " ";
    }
    cout<<endl;
}
int parsestring(string temp){
    int num= 0;
    int digs = temp.size() - 1;
    for(int i = 0 ;i<=digs;i++){
        num += pow(10 , digs -i)*(temp[i] - '0');
    }
    return num;
}

int mindig(string & s){
    int temp = INT_MAX;
//    int index = -1;
    for(int i = 0;i<s.size() ; i++){
        if(temp > s[i] - '0'){
            temp = s[i] - '0';
//            index = i;
        }
    }
    return temp;
}
//}
ll power(ll base ,ll exp){
    ll ans = 1;
    for(ll i = 1;i<=exp ; i++){
        ans *= base;
    }
    return ans;
}
//}
//
void factor(ll n ,set<ll> &s ){
        ll x = 2;
        while(n!= 1){
            if(n%x == 0){
                s.insert(x);
                n/= x;
            }
            else{
                x++;
            }
        }
    }

bool prime(int n){
    bool ok = true;
    for(int i = 2 ; i*i <= n ; i++){
        if(n%i == 0){ok =false ; break;}
    }
    return ok;
}
pair<ll ,ll > ass(pair<ll ,ll > &a , pair<ll ,ll> &b){
    pair<ll ,ll> x;
    x.first = -1e10;
    x.second = -1e10;
    if(a.second < b.first){return x;}
    if(b.second < a.first){return x;}
    if(a.first <= b.first){
        x.first = b.first;
        x.second = min(a.second , b.second);
    }
    else {
        x.first = a.first;
        x.second = min(a.second , b.second);
    }
    return x;
}
int MX = 100005;
vector<vector<int>> adj(MX , vector<int>());
vector<int> subt(MX , 1);
vector<bool> vis(MX, false);
vector<bool> vis2(MX, false);
vector<int> neigh(MX , 0);

int ans = 0;
int dfs(int x){
    if(vis[x] ){return 0;}
    vis[x]  = true;
    for(int i = 0;i<adj[x].size() ;i++){
        subt[x] += dfs(adj[x][i]);
    }
    return subt[x];
}

void dfs2(int x){
    if(vis2[x]){return;}
    vis2[x] = true;
    for(int i = 0;i<adj[x].size() ;i++){
        if(neigh[x] > 1 && subt[adj[x][i]]%2 == 0 && !vis2[adj[x][i]]){
            cout<<x<< " " <<adj[x][i]<< " " <<neigh[x]<< " " <<subt[adj[x][i]]<<endl;
            ans++;
            neigh[x]--;
            neigh[adj[x][i]]--;
//            cout<<"a "<< x<< " " <<adj[x][i]<<endl;
        }
        dfs(adj[x][i]);
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    ll n;
    cin>>n;
    vector<int> dp(3);
    for(int i = 0;i<n;i++){
        vector<int>c(3);
        for(int j = 0;j<3;j++){
            cin>>c[j];
        }
        vector<int> new_dp(3 , 0);
        for(int p = 0;p<3;p++){
            for(int q = 0;q<3;q++){
                if(p!= q){
                    new_dp[q] = max(new_dp[q] , dp[p] + c[q]);
            }}
        }
        dp= new_dp;
    }
    cout<<max(dp[0] , max(dp[1] , dp[2]));
}


Measured memory_bytes: 6240