/*#include <stdio.h>
//a>b?a:b
//return memo[3]=(st[1]>st[2])?(st[1]+st[3]):(st[2]+st[3]);
int memo[301]={};
//memo[k]=k번째 계단까지 왔을 때, 얻을 수 있는 최대점수
int st[301]={};
int rec(int n)
{
if(memo[n]!=0) return memo[n];
if(n==1) return memo[1]=st[1];
if(n==2) return memo[2]=st[1]+st[2];
if (n==3)
return memo[3]=(st[1]>st[2])?(st[1]+st[3]):(st[2]+st[3]);
return memo[n]= (st[n-1]+rec(n-3))>(rec(n-2) )?(st[n-1]+rec(n-3)+st[n]):(rec(n-2)+st[n]);
/*
if(n==3)
{
if(st[1]>st[2])
{
memo[3]=st[3]+st[1];
}
else
{
memo[3]=st[3]+st[2];
}
return memo[3];
}
if(st[n-1]+rec(n-3)>rec(n-2))
{
memo[n]=st[n]+st[n-1]+rec(n-3);
}
else
{
memo[n]=st[n]+rec(n-2);
}
return memo[n];
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&st[i]);
}
printf("%d",rec(n));
}
/*
n st[n] memo[n]
1 10 10
2 20 30
3 15 35
4 25 25 + 25vs 30 55
5 10 10 + 55 vs 35 65
6 20 75 vs 65
*/
/*
#include <stdio.h>
int main()
{
int a,n,i,m=1;
scanf("%d %d",&a, &n);
for (i=0; i<n; i++)
{
m=m*a;
}
printf("%d",&m);
}*/
//red 0
//green 1
//blue 2
#include <stdio.h>
int main()
{
int arr[1001][3]= {};
int i,j,a,n,sum=0,min=10000000;
scanf("%d",&n);
for (i=0; i<n; i++)
{
for(j=0; j<3; j++)
{
scanf("%d",&arr[i][j]);
}
}
for(j=0; j<3; j++) //color
{
sum=arr[0][j]; //cost
a=j;
for(i=1; i<n; i++)
{
if(a==0) //이전에 red를 칠했으면 ?
{
sum+=arr[i][1] < arr[i][2] ? arr[i][1]:arr[i][2];
a=arr[i][1] < arr[i][2] ? 1:2;
}
else if(a==1)
{
sum+=arr[i][0] < arr[i][2] ? arr[i][0] : arr[i][2];
a=arr[i][0] < arr[i][2] ? 0:2;
}
else
{
sum+=arr[i][0] < arr[i][1] ? arr[i][0]:arr[i][1];
a=arr[i][0]<arr[i][1] ? 0:1;
}
}
if(min>sum)
{
min=sum;
}
}
printf("%d",min);
}