#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <unordered_set>
#include <set>
#include <unordered_map>
#include <map>
using namespace std;
int House[1001][3];
int Memo[1001];
int Color[1001];
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
for (int i = 1; i <= N; ++i)
{
int R, G, B;
cin >> R >> G >> B;
House[i][0] = R;
House[i][1] = G;
House[i][2] = B;
}
// Memo[1] = min(R, G, B)
// Memo[2] = min(Memo[1]의 값 + Memo[1]의 색을 제외한 자신의 최솟값, 자신의 최솟값 + Memo[1]의 값을 제외한 House[1]의 나머지 색의 값)
Memo[1] = 10000000;
for (int i = 0; i < 3; ++i)
{
if (Memo[1] > House[1][i])
{
Memo[1] = House[1][i];
Color[1] = i;
}
}
Memo[1] = min(House[1][0], House[1][1]);
Memo[1] = min(Memo[1], House[1][2]);
for (int i = 2; i <= N; ++i)
{
int CurrentMin = 10000000;
int MinColor;
Memo[i] = 10000000;
for (int j = 0; j < 3; ++j)
{
if (Memo[i] > House[i][j] + Memo[i - 1] && Color[i - 1] != j)
{
Memo[i] = House[i][j] + Memo[i - 1];
Color[i] = j;
}
if (CurrentMin > House[i][j])
{
CurrentMin = House[i][j];
MinColor = j;
}
if (j != Color[i - 1])
House[i][j] = House[i][j] + Memo[i - 1];
else
House[i][j] = 10000000;
}
if (MinColor != Color[i])
{
for (int j = 0; j < 3; ++j)
{
if (Memo[i] > House[i - 1][j] + CurrentMin && MinColor != j)
{
Memo[i] = House[i - 1][j] + CurrentMin;
Color[i - 1] = j;
Color[i] = MinColor;
}
}
}
}
cout << Memo[N];
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxtYXA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IEhvdXNlWzEwMDFdWzNdOwppbnQgTWVtb1sxMDAxXTsKaW50IENvbG9yWzEwMDFdOwoKaW50IG1haW4oKQp7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKE5VTEwpOwoJY291dC50aWUoTlVMTCk7CgoJaW50IE47CgljaW4gPj4gTjsKCglmb3IgKGludCBpID0gMTsgaSA8PSBOOyArK2kpCgl7CgkJaW50IFIsIEcsIEI7CgkJY2luID4+IFIgPj4gRyA+PiBCOwoJCUhvdXNlW2ldWzBdID0gUjsKCQlIb3VzZVtpXVsxXSA9IEc7CgkJSG91c2VbaV1bMl0gPSBCOwoJfQoKCS8vIE1lbW9bMV0gPSBtaW4oUiwgRywgQikKCS8vIE1lbW9bMl0gPSBtaW4oTWVtb1sxXeydmCDqsJIgKyBNZW1vWzFd7J2YIOyDieydhCDsoJzsmbjtlZwg7J6Q7Iug7J2YIOy1nOyGn+qwkiwg7J6Q7Iug7J2YIOy1nOyGn+qwkiArIE1lbW9bMV3snZgg6rCS7J2EIOygnOyZuO2VnCBIb3VzZVsxXeydmCDrgpjrqLjsp4Ag7IOJ7J2YIOqwkikKCglNZW1vWzFdID0gMTAwMDAwMDA7Cglmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKCXsKCQlpZiAoTWVtb1sxXSA+IEhvdXNlWzFdW2ldKQoJCXsKCQkJTWVtb1sxXSA9IEhvdXNlWzFdW2ldOwoJCQlDb2xvclsxXSA9IGk7CgkJfQoJfQoKCU1lbW9bMV0gPSBtaW4oSG91c2VbMV1bMF0sIEhvdXNlWzFdWzFdKTsKCU1lbW9bMV0gPSBtaW4oTWVtb1sxXSwgSG91c2VbMV1bMl0pOwoKCWZvciAoaW50IGkgPSAyOyBpIDw9IE47ICsraSkKCXsKCQlpbnQgQ3VycmVudE1pbiA9IDEwMDAwMDAwOwoJCWludCBNaW5Db2xvcjsKCQlNZW1vW2ldID0gMTAwMDAwMDA7CgkJZm9yIChpbnQgaiA9IDA7IGogPCAzOyArK2opCgkJewoJCQlpZiAoTWVtb1tpXSA+IEhvdXNlW2ldW2pdICsgTWVtb1tpIC0gMV0gJiYgQ29sb3JbaSAtIDFdICE9IGopCgkJCXsKCQkJCU1lbW9baV0gPSBIb3VzZVtpXVtqXSArIE1lbW9baSAtIDFdOwoJCQkJQ29sb3JbaV0gPSBqOwoJCQl9CgoJCQlpZiAoQ3VycmVudE1pbiA+IEhvdXNlW2ldW2pdKQoJCQl7CgkJCQlDdXJyZW50TWluID0gSG91c2VbaV1bal07CgkJCQlNaW5Db2xvciA9IGo7CgkJCX0KCgkJCWlmIChqICE9IENvbG9yW2kgLSAxXSkKCQkJCUhvdXNlW2ldW2pdID0gSG91c2VbaV1bal0gKyBNZW1vW2kgLSAxXTsKCQkJZWxzZQoJCQkJSG91c2VbaV1bal0gPSAxMDAwMDAwMDsKCQl9CgoJCWlmIChNaW5Db2xvciAhPSBDb2xvcltpXSkKCQl7CgkJCWZvciAoaW50IGogPSAwOyBqIDwgMzsgKytqKQoJCQl7CgkJCQlpZiAoTWVtb1tpXSA+IEhvdXNlW2kgLSAxXVtqXSArIEN1cnJlbnRNaW4gJiYgTWluQ29sb3IgIT0gaikKCQkJCXsKCQkJCQlNZW1vW2ldID0gSG91c2VbaSAtIDFdW2pdICsgQ3VycmVudE1pbjsKCQkJCQlDb2xvcltpIC0gMV0gPSBqOwoJCQkJCUNvbG9yW2ldID0gTWluQ29sb3I7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJY291dCA8PCBNZW1vW05dOwp9