//
source code of submission 736533, Zhongshan University Online Judge System
#include
<
iostream
>
#include
<
cstring
>
#include
<
stdio.h
>
using
namespace
std;
const
int
MAX
=
100002
;
long
long
dp[MAX][
4
];
int
d1,d2,d3,n;
long
long
min1(
long
long
x,
long
long
y)
{
if
(x
<
y)
return
x;
else
return
y;
}
long
long
min2(
long
long
a,
long
long
b,
long
long
c)
{
long
long
_min
=
a;
if
(_min
>
b) _min
=
b;
if
(_min
>
c) _min
=
c;
return
_min;
}
long
long
min3(
long
long
a,
long
long
b,
long
long
c,
long
long
d)
{
long
long
_min
=
a;
if
(_min
>
b) _min
=
b;
if
(_min
>
c) _min
=
c;
if
(_min
>
d) _min
=
d;
return
_min;
}
int
main()
{
int
i,ca
=
0
;
while
(scanf(
"
%d
"
,
&
n)
&&
n)
{
scanf(
"
%d %d %d
"
,
&
d1,
&
d2,
&
d3);
dp[
0
][
0
]
=
0
; dp[
0
][
1
]
=
d2; dp[
0
][
2
]
=
d2
+
d3;
for
(i
=
1
;i
<
n;
++
i)
{
scanf(
"
%d %d %d
"
,
&
d1,
&
d2,
&
d3);
if
(i
==
1
)
{
dp[i][
0
]
=
d1
+
dp[i
-
1
][
1
];
dp[i][
1
]
=
d2
+
min2(dp[i][
0
],dp[i
-
1
][
1
],dp[i
-
1
][
2
]);
dp[i][
2
]
=
d3
+
min2(dp[i][
1
],dp[i
-
1
][
1
],dp[i
-
1
][
2
]);
}
else
{
dp[i][
0
]
=
d1
+
min1(dp[i
-
1
][
0
],dp[i
-
1
][
1
]);
dp[i][
1
]
=
d2
+
min3(dp[i][
0
],dp[i
-
1
][
0
],dp[i
-
1
][
1
],dp[i
-
1
][
2
]);
dp[i][
2
]
=
d3
+
min2(dp[i][
1
],dp[i
-
1
][
1
],dp[i
-
1
][
2
]);
}
}
printf(
"
%d. %d\n
"
,
++
ca,dp[n
-
1
][
1
]);
}
return
0
;
}