// Original C++ solution (slower):
#include <iostream>

using namespace std;



int main()

{



    int dias;

    cin >> dias;

    int atividades[dias][3];

    int felicidadeDasAtividades[dias][3];



    for (int i = 0; i < dias; i++)

    {

        cin >> atividades[i][0] >> atividades[i][1] >> atividades[i][2];

        felicidadeDasAtividades[i][0] = felicidadeDasAtividades[i][1] = felicidadeDasAtividades[i][2] = 0;

    }



    for (int i = dias - 1; i >= 0; i--)

    {

        if (i == dias - 1)

        {

            felicidadeDasAtividades[i][0] = atividades[i][0];

            felicidadeDasAtividades[i][1] = atividades[i][1];

            felicidadeDasAtividades[i][2] = atividades[i][2];

        }

        else

        {

            if (felicidadeDasAtividades[i + 1][2] >= felicidadeDasAtividades[i + 1][1])

            {

                felicidadeDasAtividades[i][0] = atividades[i][0] + felicidadeDasAtividades[i + 1][2];

            }

            else

            {

                felicidadeDasAtividades[i][0] = atividades[i][0] + felicidadeDasAtividades[i + 1][1];

            }



            if (felicidadeDasAtividades[i + 1][2] >= felicidadeDasAtividades[i + 1][0])

            {

                felicidadeDasAtividades[i][1] = atividades[i][1] + felicidadeDasAtividades[i + 1][2];

            }

            else

            {

                felicidadeDasAtividades[i][1] = atividades[i][1] + felicidadeDasAtividades[i + 1][0];

            }



            if (felicidadeDasAtividades[i + 1][1] >= felicidadeDasAtividades[i + 1][0])

            {

                felicidadeDasAtividades[i][2] = atividades[i][2] + felicidadeDasAtividades[i + 1][1];

            }

            else

            {

                felicidadeDasAtividades[i][2] = atividades[i][2] + felicidadeDasAtividades[i + 1][0];

            }

        }



    }

    int melhorEscolha = 0;

    if (felicidadeDasAtividades[0][0] >= felicidadeDasAtividades[0][1] && felicidadeDasAtividades[0][0] >= felicidadeDasAtividades[0][2])

    {

        cout << felicidadeDasAtividades[0][0] << endl;

    }

    else if (felicidadeDasAtividades[0][1] >= felicidadeDasAtividades[0][0] && felicidadeDasAtividades[0][1] >= felicidadeDasAtividades[0][2])

    {

        cout << felicidadeDasAtividades[0][1] << endl;

    }

    else if (felicidadeDasAtividades[0][2] >= felicidadeDasAtividades[0][0] && felicidadeDasAtividades[0][2] >= felicidadeDasAtividades[0][1])

    {

        cout << felicidadeDasAtividades[0][2] << endl;

    }

}


// Optimized solution to the same problem (faster):
#include <cstdio>

#include <algorithm>



using namespace std;

const int maxn = 100000;

int arr[maxn][3], dp[maxn][3];



int main() {

    int n, a, b, c;

    scanf("%d", &n);

    for (int i = 0; i < n; ++i) {

        scanf("%d%d%d", &a, &b, &c);

        arr[i][0] = a;

        arr[i][1] = b;

        arr[i][2] = c;

        for (int j = 0; j < 3; ++j) {

            if (i == 0) {

                dp[i][j] = arr[i][j];

            } else {

                dp[i][j] = max(dp[i - 1][(j + 1) % 3], dp[i - 1][(j + 2) % 3]) + arr[i][j];

            }

        }

    }

    int ans = -1;

    for (int j = 0; j < 3; ++j) {

        if (dp[n - 1][j] > ans) {

            ans = dp[n - 1][j];

        }

    }

    printf("%d", ans);

    return 0;

}






// Fastest known solution for this problem: