//////////////////////////////////////////////////////
//                       .-.                        //
//                      |_:_|                       //
//                     /(_Y_)\                      //
//.                   ( \/M\/ )                     // 
// '.               _.'-/'-'\-'._                   //
//   ':           _/.--'[[[[]'--.\_                 //
//     ':        /_'  : |::"| :  '.\                //
//       ':     //   ./ |oUU| \.'  :\               //
//         ':  _:'..' \_|___|_/ :   :|              //  
//           ':.  .'  |_[___]_|  :.':\              //
//            [::\ |  :  | |  :   ; : \             //
//             '-'   \/'.| |.' \  .;.' |            //
//             |\_    \  '-'   :       |            //
//             |  \    \ .:    :   |   |            //
//             |   \    | '.   :    \  |            //
//             /       \   :. .;       |            //
//            /     |   |  :__/     :  \\           //
//           |  |   |    \:   | \   |   ||          //
//          /    \  : :  |:   /  |__|   /|          //
//          |     : : :_/_|  /'._\  '--|_\          //
//          /___.-/_|-'   \  \                      //
//                        '-'                       //
//////////////////////////////////////////////////////


#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define ff first
#define ss second
#define rep(i,a,b) for(int i=a;i<b;i++)
#define repp(i,a,b) for(int i=a;i<=b;i++)
#define endl '\n'
#define mod 1000000007

bool sorttt(const pair<int,int> &a, 
              const pair<int,int> &b) 
{ 
    return (a.second < b.second); 
}
    vector<int> v[1000001];
    int arr[200001];
    int n,m,d=0;
    bool rec[200001]={0};
    int mx=0,k=-1;
    set<int> se;

// void dfs(int x,int c){
//     rec[x]=1;
//     rep(i,0,v[x].size()){
//         if(!rec[v[x][i]]&&arr[i]==1){
//             dfs(v[x][i],c+1);
//         }
//         else if(!rec[v[x][i]]&&arr[i]==0){
//             dfs(v[x][i],c);
//         }
//     }
//     if(c<=m)d++;
// }

void dfs(int x){
    rec[x]=1;
    for(auto it : v[x]){
        if(!rec[v[x][it]]){ dfs(v[x][it]);}
    }
}
bool bfs(int x, int n,int m){
    int f=0;
    bool vis[n+1];
    rep(i,1,n+1)vis[i]=false;
    vis[x]=true;
    list<int> q;
    q.pb(x);
    while(!q.empty()){
        int s=q.front();
        if(s==m)f=1;
        q.pop_front();
        for(int i=0;i<v[s].size();i++){
            if(!vis[v[s][i]]){
                vis[v[s][i]]=true;
                q.pb(v[s][i]);
            }
        }
    }
    if(f)return true;
    return false;
}

signed main()
{
    fast
    int n; cin>>n;
    int a[n][3], b[n][3];
    rep(i,0,n)cin>>a[i][0]>>a[i][1]>>a[i][2];
    b[0][0]=a[0][0]; b[0][1]=a[0][1]; b[0][2]=a[0][2];
    rep(i,1,n){
        b[i][0]=max( b[i-1][1] + a[i][0], b[i-1][2] + a[i][0] );
        b[i][1]=max( b[i-1][0] + a[i][1], b[i-1][2] + a[i][1] );
        b[i][2]=max( b[i-1][0] + a[i][2], b[i-1][1] + a[i][2] );
    }
    cout << max( b[n-1][0], max(b[n-1][1], b[n-1][2]) )<<endl;
}


Measured memory_bytes: 28416